Mysql常用五类约束:
not null:非空约束,指定某列不为空
unique: 唯一约束,指定某列和几列组合的数据不能重复
primary key:主键约束,指定某列的数据不能重复、唯一
foreign key:外键,指定该列记录属于主表中的一条记录,参照另一条数据
check:检查,指定一个表达式,用于检验指定数据
其中 外键约束只有InnoDB引擎支持。
外键 约束两张表的关系
出现数据冗余问题
把字段数据出现比较高冗余的字段 单独放到一张表中
员工表当中 部门 信息 这个时候时候就可以吧部门信息单独设计一张表
主表:约束别人的表被称为主表
副表 被别人约束的表被称为附表
一般情况下 外键约束在附表当中
举例来说建立一张员工表 emp并且插入数据:
CREATE TABLE emp(
id INT PRIMARY KEY,
empname VARCHAR(20), -- 员工姓名
deptname VARCHAR(20) -- 员工部门编号
);
建立一张部门表并且插入数据:
CREATE TABLE depart(
id INT PRIMARY KEY AUTO_INCREMENT ,
depart_name VARCHAR(20)
)DEFAULT CHARSET = utf8;
期初在没有 外键约束的条件下我们可以看出 删除副表某一部门id 并不会影响,主表中的员工的所在的部门id;
这是实际不符和 员工坐在的部门都已经不存在了,主表中员工的部门id需要做出调整。
这是我们就需要添加外键约束来实现