什么是主键?
关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。
什么是外键?
其他表的主键称为外键。
外键取值规则:空值或参照的主键值。
(1)插入非空值时,如果主键表中没有这个值,则不能插入。
(2)更新时,不能改为主键表中没有的值。
(3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。
(4)更新主键记录时,同样有级联更新和拒绝执行的选择。
设置主键:
SQLServer:
打开之前建立的表,即选择 数据库->SSMSTest->表->dbo.student 右键单击dbo.student选择设计。
在sno处右键单击选择设置主键
MySql:
选择需要设计主键的表,点击设计表,找到键点击出现钥匙即可
代码:
点击新建查询输入下列代码,然后点击运行即可
drop table student --删除表student
create table student --创建表student
(sno char(4) primary key, --设置sno为主键
sname char(8),
sage int,
ssex char(2),
sdept char(20)
)
外键设置:
SQLServer:
选择 数据库->SSMSTest->表->dbo.sc 右键单击dbo.sc选择设计。
右键单击sno或者cno,选择关系。
点击左下角的添加。
在 表和列规范 后面的框中点一下,就会出现后面的三个点的按钮,点击三个点图标的那个按钮。
因为sc中的sno引用了student中的sno,所以主键表那里选择student,然后选择对应的sno。而sc中的cno因为引用的是course中的sc,所以在这里没法设置外键,需要等下再设置,在这里把它选择为无。点击确定。
再次点击左下角的添加。按照上述步骤将主键表选择为course,选择对应sc中的cno的course中的cno,并点击确定。
点击关闭,然后保存,在出现的警告中选择是。
MySql:
如图所示设计表,点击外键,直接添加即可
代码:
drop table sc
create table sc
(sno char(4) foreign key references student(sno), --加外键约束
cno char(4) foreign key references course(cno), --加外键约束
grade int,
primary key(sno, cno) --设置sno和cno的属性组为主键
)