概述:
对表中的数据进行限制,包装数据的完整性,有效性、正确性一个表如果添加了约束,不正确的数据将无法添加到表中约束在创建表的时候添加比较合适
一、主键约束
用来唯一标识数据库中的每一条记录通常不用业务字段作为主键主键是给数据库和程序使用的,不是给终端客户使用的只要不重复,非空就行主键特点:非空,唯一删除、添加主键
主键自增
在每次插入新的记录时,数据库自动生成主键字段的值
修改自增的默认起始值
设置auto_increment
后,默认起始值为1,若修改起始值则:
创建好后,修改起始值
delete :删除数据对自增的影响
truncate :删除数据对自增的影响
二、唯一约束
表中的某一列不能重复出现格式:name varchar(20) unique
三、非空约束
某一列不能为空语法 :age int not null
注意:如果一个字段设置了非空与唯一约束,该字段与主键有什么区别??
主键数在一个表中只能有一个主键可以是单列,也可以是多列自增长只能用在主键上
四、外键约束
在上面的表中,有些数据重复出现,适合创建两个表,需要约束 dep_id 只能是部门表中已经存在的 id(如下图)
外键约束:在从表中与主表对应的那一列
创建主表:
创建从表:
通过 SQLyog 工具即可查看
查看关联
删除外键
五、外键的级联
如果把部门表 department 中的 id 的值修改为 5 的话,是修改不了的
如果把部门表 department 中的 id = 1 的部门删除掉呢??
在修改和删除主表的主键时,同时更新或删除从表的外键值时,称为级联操作
on update cascade
:级联更新on delete cascade
:级联删除
MySQL数据库表约束的详细解释——主键(primary key) 唯一(unique) 非空(not nul) 外键(foreign key)