【MySQL】数据库的约束(主键、外键)
约束:数据库真对数据进行一系列的校验,如果发现插入的数据不符合约束中描述的校验规则,就会插入失败
1.约束类型
NOT NULL | 指示某列不能存储 NULL 值 |
UNIQUE | 保证某列的每行必须有唯一的值 |
DEFAULT | 规定没有给列赋值时的默认值 |
PRIMARY KEY | NOT NULL 和 UNIQUE 的结合,确保某列(或多个列的结合)有唯一标识,有助于更容易快速地找到表中的一个特定数据 |
FOREIGN KEY | 保证一个表中的数据匹配另一个表中的值的参照完整性 |
CHECK | 保证列中的值符合指定的条件。对于MySQL数据库,对 CHECK 字句进行分析,但是忽略 CHECK 子句 |
主键 primary key
运用这个约束,表的这一列设置不能为 null
测试一下
当我们没有对 id 进行赋值的时候,他就会报错,说我们没有设置过默认值。
auto_increment 自增主键
添加数据的时候不需要输入数据们就会自动生成
如果 int 类型的自增主键,有效范围是 -21亿 ~ 21亿,如果超出数据范围,字啊继续自增,就会出现溢出情况
外键约束 FOREIGN KEY
调整后:
需要指定三方面信息:
- 指定当前表中哪列进行关联
- 指定和哪张表关联
- 指定和目标表中的哪一张进行关联
后续 student 插入数据的时候,MySQL 就会自动检查当前的 classId 字段的值是否在 class 表中的 id 列中出现过,如果没有出现过,就会插入失败
查看效果
使用外键,会对插入操作的效率产生一定的影响,外键约束也会影响表的删除
class 表被其他表关联着,此时是无法直接阐述 class 表的
如果真的把 class 删除了,此时再对 student 的 classId 的约束也就没有意义了