一. 约束介绍
约束条件与数据类型的宽度一样,都是可选参数.
用于保证数据的完整性和一致性.
二. 约束分类
1. primary key (pk) 表示该字段为该表的主键,可以唯一的标识记录
2. foreign key (fk) 标识该字段为该表的外键
3. not null 标识该字段不能为空
默认为空, 设置不为空就必须要为字段赋值
4. unique key (uk) 标识该字段的值是唯一的
5. anto_increment 标识该字段的值自动增长(整数类型, 而且为主键)
6. default 为该字段设置默认值
默认为null, 如果设置了默认值,并且插入数据时不给该字段赋值时,使用默认值.
三 . 详细分类验证
1. not null 和 default
2. unique
①. 单列唯一
在mysql中称为单列唯一,即同一列内唯一
将 name 字段设置为唯一, 不可以给 name 字段插入相同的值.
②. 联合唯一
将id设置为单列唯一,将ip+端口设置为联合唯一,也就是ip+端口不可以相同,ip或端口相同可以.
3. primary key
在一个表中 : 单列可以做主键, 多列也可以做主键(复合主键)
约束 : 字段的值不能为空而且唯一
①. 单列主键
将id设置为主键, 主键唯一,而主键的值可以相同.
②. 复合主键 将多个字段一起设置为主键
将ip+端口设置为联合主键,当ip+端口完全相同时,即使name字段的值不同也会报错
而将其中一个端口修改之后,即使name字段的值相同也是可以插入表中的.
4. auto_increment 自增长
将id设置为主键并且设置为自增长模式,插入数据时即使不插入id,表内也会自动生成数据id.并且每次 + 1 .
也可以指定id 插入数据 :
如果继续插入不指定 id 的数据, 会在之前的最后一条记录继续增长.
如果将表内的数据全部删除之后再往这个表内查数据,id一样是在被删除数据的最后一条记录内的id数 + 1 :
对应自增长来说,即使被删除的数据也拥有唯一的id.
5. foreign key
外键总结来说就是其他表的主键
设置外键的目的是是某一张表的数据不要过于冗余,和编程中函数的思想相似.
多表中,被关联的表是主表,关联表是从表.
建表时要先建被关联表,后建关联表.
来源:https://www.cnblogs.com/dong-/p/9673387.html