SQL

什么是主键?

关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键。

比如student表中的一条学生记录,学生有学号,姓名,性别,班级等属性

而每个每个学生可以由学号唯一确定,则学号就是一个主键

成绩表(学号,课程号,成绩)
成绩表中单一一个属性无法唯一标识一条记录,学号和课程号的组合才可以唯一标识一条记录,所以 学号和课程号的属性组是一个主键

 

成绩表中的学号不是成绩表的主键,但它和学生表中的学号相对应,并且学生表中的学号是学生表的主键,则称成绩表中的学号是学生表的外键

 

主键外键的作用:https://www.cnblogs.com/PyLearn/p/7624768.html
(1)

(2)

使用smss设置主键:

进入数据库的表中,进入表的设计页面,在要设置为主键的某列名

上单击右键,选择设置主键

 

 

 

保存快捷键:ctrl+s

也可以使用shift键(按住)同时选择多行(要单击列名前面的方框才能选择),右键设置为主键

 

 

 

使用SQL语句设置主键:

 

 

 

 

 

 

 

 

设置外键:

 

由于sc中引用了student的sno和course的cno所以:分别设置外键

 

 

 

保存时如果跳出不允许保存更改且没用-是-选项

 

 

 

勾选掉阻止保存要求重新。。。。

 

 

 

 

 

 用SQL语句设置外键:

drop table sc    --删除表sc
create table sc  --创建表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的属性组为主键
)

 

4.SQL语句向已存在表设置主键和外键

 

 

drop table student    --删除表student
create table student  --创建表student
(sno char(4) not null,  --加非空约束,不加"not null" 默认为:可以为空
sname char(8),
sage int,
ssex char(2),
sdept char(20)
)

alter table student
add constraint PK_sno
primary key (sno)

4.2 已存在表设置外键

alter table 表名
add constraint FK_字段名--"FK"为外键的缩写
foreign key (字段名) references 关联的表名(关联的字段名) --注意'关联的表名'和'关联的字段名'

 

alter table sc add constraint FK_sno foreign key (sno) references student(sno)

 

posted @ 2021-03-08 09:53  ziggystardust  阅读(106)  评论(0)    收藏  举报