我们项目中都会有很多表。
为什么不使用单表呢?查询效率低,数据冗余。
为什么要使用多表?查询效率高,数据不冗余。
由多表引入外键这个概念:什么是外键呢?举例来讲,
员工表有:
图片
部门表有:
图片
员工表中部门 dept_id 与部门表中部门 id 对应,那员工表的部门 dept_id 就叫做外键。拥有外键的员工表被称为从表 , 与外键对应的主键所在的部门表叫做主表。
创建外键约束格式:
# 创建 employee 员工表,添加外键约束
CREATE TABLE employee(
eid INT PRIMARY KEY AUTO_INCREMENT,
ename VARCHAR(20),
age INT,
dept_id INT,
# 添加外键约束
CONSTRAINT emp_dept_fk FOREIGN KEY(dept_id) REFERENCES department(id)
);
删除外键格式:
# 语法格式
alter table 从表 drop foreign key 外键约束字段;
# 例子,删除 employee 表中的外键约束,外键约束名 emp_dept_fk
alter table employee drop foreign key emp_dept_fk;
添加外键格式:
# 语法格式
alter table 从表 add foreign key (外键约束字段) references 主表 (主键字段);
# 例子,添加 employee 表外键约束
alter table employee add foreign key (dept_id) references department (id);
注意:
从表外键类型必须与主表主键类型一致,否则创建失败
添加数据时,应该先添加主表中的数据
删除数据时,应该先删除从表中的数据
网友评论