0基础学MySQL数据库—从小白到大牛(12)约束

前言

1.1什么是约束为什么要约束?

约束就是一个强制规定,在创建表的时候规定约束(CREATE TABLE语句),或者在表创建之后ALTER TABLE 语句规定约束。
为了保证数据的完整性,SQL规范以约束的方式对表数据进行额外的条件限制:

  • 实体完整性:同一个表中,不能存在两条一样的无法区分的记录
  • 域完整性:年龄范围,性别范围
  • 引用完整性:员工所在部门,在部门表中要能找到这个部门
  • 用户自定义完整性:用户名唯一,密码不能为空...

1.2约束的分类

  • 根据约束的数据列限制约束可以分为: 单列约束多列约束
  • 根据约束的作用范围约束可以分为: 列级约束表级约束
位置 支持的约束类型 是否可以起约束名
列级约束: 列的后面 语法都支持,但外键没有效果 不可以
表级约束: 所有列的下面 默认和非空不支持,其他支持 可以(主键没有效果)
  • 根据约束起的作用约束可分为: NOT NULL非空约束,规定某个字段不能为空 UNIQUE 唯一约束,规定某个字段在整个表中是唯一的 PRIMARY KEY 主键(非空且唯一)约束 FOREIGN KEY 外键约束 CHECK 检查约束 DEFAULT 默认值约束

CHECK约束在MySQL5.7中不支持,如果使用CHECK约束没有任何效果,只有在MySQL8.0中有效果。

查看表约束SELECT * FROM information_schema.table_constraints  #information_schema是MySQL自带的数据库WHERE table_name = '表名称';