外键约束涉及到的相关术语:
- 外键约束:一种约束(foreign key)
- 外键字段:该字段上添加外键约束
- 外键值:外键字段当中的每一个值
子表和父表之间的顺序
删除表的顺序
- 先删子,再删父
创建表的顺序
- 先创建父,再创建子
删除数据的顺序
- 先删子,再删父
插入数据的顺序
- 先插入父,再插入子
思考:子表中的外键引用的父表中的某个字段,被引用的这个字段必须是主键吗?
不一定是主键,但至少具有unique约束
设计一张数据库表,来描述”班级和学生”信息
drop table if exists t_student;drop table if exists t_class;#请设计一张数据库表,来描述"班级和学生"的信息create table t_class(classno int primary key,classname varchar(255));create table t_student(no int primary key auto_increment,name varchar(255),cno int,foreign key(cno) references t_class(classno) #外键约束);insert into t_class(classno,classname) values (110,'麻省理工软件与信息工程学院1班');insert into t_class(classno,classname) values (111,'麻省理工软件与信息工程学院2班');insert into t_student(name,cno) values ('Jack',110);insert into t_student(name,cno) values ('Marry',110);insert into t_student(name,cno) values ('Lucy',110);insert into t_student(name,cno) values ('Cedric',110);insert into t_student(name,cno) values ('zhangsan',110);insert into t_student(name,cno) values ('lisi',111);insert into t_student(name,cno) values ('wangwu',111);insert into t_student(name,cno) values ('zhaoliu',111);insert into t_student(name,cno) values ('Smith',111);select * from t_class;select * from t_student;#外键字段可以为nullinsert into t_student(name) values ('qiqi');
