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)
学习的时候喜欢用Markdown做记录,存货已经堆满文件夹了

浙公网安备 33010602011771号