以下文章来源于何先振,责编小何

数据库中需要确保数据的精准性和可靠性。防止数据库中存在不符合语义和规定的数据,防止因错误信息的输入、输出造成无效操作或错误信息。
因此SQL规范提出了约束,主要从四个方面考虑:
实体完整性:例如:同一个表中,不能存在两条完全相同无法区分的记录。
域完整性:例如:年龄的范围:0-120,性别:男或者女。
引用完整性:例如:员工所在部门,员工在部门表中要能找到这个部门。
用户自定义完整性:例如:用户名唯一、密码不能为空等。
约束也就是对表中的数据做限制。
约束的分类:
可根据不同的角度进行分类:
角度1:约束的字段个数可分为,单列约束和多列约束。
角度2:约束的作用范围,列级约束和表级约束。
列级约束:将此约束声明在对应字段的后面。
表级约束:在表中所有字段都声明完后,在所有字段的后面声明的约束。
角度3,根据约束的作用划分:
not null 非空约束
unique 唯一性约束
primary key 主键约束
foreign key 外键约束
check 检查约束
default 默认值约束
如何添加约束:
create table时添加约束
alter table时增加约束、删除约束
如何查看表中的约束:
可通过MySQL的默认数据库information_schema中的table_constraints表查看。


查employees表的约束。

MySQL默认,所有数据类型的值都可以是null,包括:int、float等数据类型。如果我们需要不能为空,就可以使用非空约束。
SQL语法:not null
特点:
非空约束只能出现在表对象的列上,只能某个列单独限定非空,不能组合非空。
一个表可以有很多列都分别限定非空。
空字符串不等于null,0也不等于null。
添加方式:
create table时添加约束:
创建数据库、指定使用刚创建的数据库


给id、last_name字段添加非空约束not null

查看表信息

添加数据

给名字添加空,报错,因为加了非空约束。

给id设置空,报错,因为也加了非空约束

添加数据时必须给非空的字段赋值,否则会报错。例如:last_name没有赋值,我们也没指定默认值default

alter table时添加约束:
先查看表信息,只有前两个字段有约束

添加约束 modify关键字 。注意:如果该字段本身存在有空的存量数据,需要先设置非null才能添加。

重新查看表信息,已经添加约束成功。

alter table时删除约束:
删除约束

查看表信息,删除成功






