数据约束针对表中的列加约束,为了保证数据库中数据的完整性,有效性从而对数据进行限制
实体完整性: 确保每条记录的唯一性,能够被唯一区分
- 主键约束(整数,字符串):primary key 特征:加了主键约束的列,值必须唯一,并且不能为空
针对主键约束的列会自动生成索引文件(提高查询效率). 主键列可以由一列构造,一个表中只能有一个主键,但是主键可以有多个列构造(联合主键)
- 自增约束(整形): auto_increment 特征: 自增约束只能加到整数类型的列上,一个表只能有一个列加自增约束。该列的值会有系统自动生成,数据也是唯一的,一般和主键约束一起使用
1.系统自动生成唯一编号
2.自增约束必须在主键约束的基础上使用,主键列必须是整数类型
3.自增约束不一定保证连续性
4.自增约束会在前一条记录的基础上增1,默认从1开始
c. 唯一约束 :unique 特点:确保该列是唯一的,值允许null(可以有多个)
域完整性: 针对数据的取值做约束
非空约束 not null 特征:加了该约束的列,不能为空,该列必须有值
默认值约束 default 特征:加了默认值约束的列,如果没有提供值时自动用默认值替代。如果提供了值则用提供值的填充
外键约束 foreign key references 特征:存在于多个表之间,如果要对这个列加外键约束。该列的值不能随便写
不写外键规则,但是存在外键约束,这种称为逻辑外键
定义外键规则,称为物理外键
a表被b表所依赖 b表是从表 a是主表
- 有外键关联的两个表,从表插入的外键列的数据必须在主表中存在
- 主表中的数据被关联的情况下,不能被删除
- 主表中的数据被关联的情况下,不能修改
- 有外键关联的两个表,删除的时候,先删除从表再删除主表
on delete cascade 针对外键设置删除级联规则
主表数据变化,从表跟着变化:级联删除 (允许主表删除数据,主表删除的数据列从表也会删除数据列)
on update cascade 针对外键设置更新级联规则 (允许主表修改数据,主表修改的数据列从表也会修改数据列)
主表数据修改,从表跟着修改:级联修改
check约束 mysql没有 ms sqlserver有 限定值的范围 sex 男~女
引用完整性 :多表之间有数据的依赖关系,要确保依赖关系的正确性
外键约束 foreign key 特征:存在于多表之间,如果一个表中某列的数据依赖于另外一个表的数据 此时要对这个列加外键约束 该列的值不能随便写
如何识别某个表中是否加了主键约束
delete from student; 删除整表数据 (删除全表数据不会重置自增列)
truecate table student ; 清空整表数据,可以重置自增列