主键约束,就是控制某个表的字段必须符合外面对应字段的内容。如下t_studendt.cno 必须对应上t_class.cno字段下存在的值,否则就不会就会报错。
创建顺序
先创建父表再创建子表。
删除顺序
删除时候需要先删除子表再删除父表。
t_class 班级表
cno(pk) cname
-----------------------------
100 清华小学六年级1班
101 清华小学六年级2班
t_student 学生表
no(pk) name cno(FK 引用t_class => 班级编号)
----------------------------------------
1 小明 100
2 小红 100
3 小花 101
4 小黑 101
5 小们 101
5 小岁 102 -- 错误因为对应的外键不存在102
-- 外健约束
CREATE TABLE t_class (
cno INT PRIMARY KEY,
class VARCHAR(255)
)
CREATE TABLE t_student(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255),
cno INT,
-- 当前表的cno 引用 t_class表的cno字段
FOREIGN KEY (cno) REFERENCES t_class(cno)
)
INSERT INTO t_class(cno,class) VALUES(100,"清华小学六年级1班");
INSERT INTO t_class(cno,class) VALUES(101,"清华小学六年级2班");
INSERT INTO t_student(name,cno) VALUES("小明",100);
INSERT INTO t_student(name,cno) VALUES("小红",100);
INSERT INTO t_student(name,cno) VALUES("小花",100);
INSERT INTO t_student(name,cno) VALUES("小妹",101);
INSERT INTO t_student(name,cno) VALUES("小黑",101);
INSERT INTO t_student(name,cno) VALUES("小会",101);
设置好的外键约束的字段,只能使用匹配到的字段。如下,t_class里面只有100,101,所以t_student只能使用100,101。