MySql如何创建外键

MySql如何创建外键,第1张

create
table
volunteer(
志愿者编号
varchar(6)
not
null,
志愿者姓名
varchar(8),
班级编号
varchar(4),
constraint
PK_V
primary
key
(志愿者编号));
create
table
class(
班级编号
varchar(4),
班级名称
varchar(20),
学院
varchar(20),
constraint
PK_C
primary
key(班级编号),
班级编号
varchar
foreign
key
references
volunteer(班级编号));
你这个试下,我试了可以的
希望可以帮到你
SQL
创建外键语句的方法:constraint
外键名字
foreign
key
references
外键表(外键字段)

1、创建测试主表(班级表test_class),

create table test_class(class_id number, class_name varchar2(20));

2、创建测试子表(学生表test_student),

create table test_student(stu_id number, stu_name varchar2(200), class_id number);

3、主表(班级表test_class)添加唯一主键

alter table TEST_CLASS

add constraint pk_class_id primary key (CLASS_ID);

4、子表(学生表test_student)创建外键,

alter table TEST_STUDENT

add constraint fk_class_id foreign key (CLASS_ID)

references test_class (CLASS_ID);

ACCESS数据库设置数据表外键可以通过SQL数据定义查询和手动设置表间参照完整性两种方式予以实现。

注意设置外键前一方表的关联字段必须是主键或建有唯一索引,下面举例示范这两种设置方法。假设两张数据表的结构如下:

课程(课程ID 文本 主键,课程)

成绩(学号,课程ID,分数)

1)运行SQL数据定义查询

ALTER TABLE 成绩 ADD CONSTRAINT MyRelation1 FOREIGN KEY (课程ID) 
REFERENCES 课程 (课程ID);

2)手动建立两表一对多参照完整性

于表对象——右键 打开表关系视图,将要建立关系的表显示到关系视图里

拖动一方主表里的关联字段到多方表里。于d出的编辑关系对话框,选择各表对应的关联字段,勾选实施参照完整性选项后,点击创建(或确定)按钮即可,这样系统就会自动建立相应的外键了。

参见附图(此为ACCESS2003图例,其他版本类似)

注意建立外键时,若数据表里存在违反外键约束的记录,创建外键将会报错,只有删除了违反外键约束的有关记录后才能顺利完成外键的设置。

附带简介一下外键 (FOREIGN KEY) ,它是用于在两个表中的数据之间建立和加强链接的一列或多列的组合,可控制可在外键表中存储的数据。 在外键引用中,当包含一个表的主键值的一个或多个列被另一个表中的一个或多个列引用时,就在这两个表之间创建了链接。 这个列就成为第二个表的外键。

创建数据库时就是有主键的创建了主键,但是表之间的关系没有联系,要建数据库关系图只有主键没有外键时不行的。
建外键的前提是此外键必须是另外一个表的主键。建外键的步骤:
第一步、打开要建外键表的设计器,右击选择“关系”。
第二步、然后d出“外键关系”窗体,我们选择“添加”,然后点击“表和列规范”后面的小按钮。
第三步、d出另外一个窗体让我们选择主键表和列,记住要选择相同的,选好之后点击确定。
第四步、展开INSERT和UPDATE规范,在更新规则和删除规则有四个选项,分别是“不执行任何 *** 作”、“级联”、“设置为NULL”、“设置默认值”。
默认的不执行任何 *** 作。如果是“不执行任何 *** 作”,当我们删除或更新主键表的数据时,会告诉用户不能执行删除或更新该 *** 作。
“级联”的意思是当我们删除或更新主键表的数据时,会删除或更新外键表中所涉及的相关数据的所有行。
“设置Null”的意思是当我们删除或更新主键表的数据时,外键表中的外键列的值会设为Null,但前提是该列允许为空。
“设置默认值”的意思是如果我们将外键列定义了默认值,当我们删除或更新主键表的数据时,外键表中的外键列的值设为定义的默认值。
当然也可以用代码创建,在创建数据库表T——Card时只要加上一句代码就可以了。“Foreign
key
(studentNo)
references
T_Student(studentNo)"。如果已经创建了改表,那如何用代码实现了,这也很简单也就一句代码“
add
constraint
CMPKey(外键名)
foreign
key(studentNo)
references
T_Student(studentNo)”。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12991050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-29
下一篇 2023-05-29

发表评论

登录后才能评论

评论列表(0条)

保存