表之间的关系
foreign key
外键约束,用于指向另一个表的主键字段
# 创建表的时候添加外键
create table teacher(
id int primary key auto_increment,
name char(20),
gender char(1),
dept_id int,
foreign key(dept_id) references dept(id)
);
解释:
foreign key(dept_id) references dept(id)
dept_id 表示当前表的外键字段
dept 表示要关联哪个表
dept(id) id表示关联的dept表的id字段
主表与从表
先有主表 再有从表
先有dept 再有teacher
foreign key 带来的约束作用:
1.在从表中插入一条记录,关联了一个主表中不存在的id 导致插入失败
必须保证部门id (外键的值) 必须是在主表中存在的
2.插入数据的顺序
先插入主表记录 在插入从表记录
3.从表更新外键时也必须保证 外键的值在主表中是存在的
4.删除主表记录前 要保证从表中没有外键关联被删除的id
delete from dept where id = 1;# 报错
必须先删除从表 再删除主表
delete from teacher where dept_id = 1;
delete from dept where id = 1;
5.更新主表记录的主键时 要保证从表中没有外键关联被删除的id
6.必须先创建主表