MySQL表级完整性约束
为防止不符合规范的数据存入数据库,在用户对数据进行插入、修改、删除等操作时,MySQL提供
了一种机制来检查数据库是否满足规定的条件,以保证数据库中数据的准确性和一致性,这种机制
就是完整性约束。MySQL中主要支持六种完整性约束,如表所示。
约束条件 | 约束描述 |
PRIMARY KEY | 主键约束,约束的值可唯一的标识对应的记录 |
NOT NULL | 非空字段的值不能为空 |
UNIQUE | 唯一约束,约束1字段的值是唯一的 |
CHECK | 检查约束,限制某个字段的取值范围 |
DEFAULT | 默认值约束,约束字段的默认值 |
AUTO_INCREMENT | 自动增加位数,约束字段的值自动递增 |
FOREIGN KEY | 外键约束,约束与表之间的关系 |
约束从作用上可以分为两类:(1) 表级约束:可以约束表中任意一个或多个字段。与列定义的相互独立,不包含
在列表定义中;与定义用‘,’分隔;必须指出要约束的列的名称;(2) 列级约束:包含在列定义中,直接跟在该列的其他定义之后,用空格分隔,不必指定列名;
1、主键约束
主键约束(PRIMARY KEY,缩写PK),是数据库中最重要的一种约束,其作用是约束表中的某个字段可以
唯一标识一条记录。因此,使用主键约束可以快速查找表中的记录,就像人的身份证、学生的学号等等,
设置主键的字段取值不能重复(唯一),也不能为空(非空),否则无法唯一标识一条记录。2、非空约束
非空约束(NOT NULL,缩写NK),规定一张表中指定的某个字段的值不能为空(NULL),设置了非空约束
的字段,在插入的数据为NULL时,数据库会提示错误,导致数据无法插入。
无论是单个字段还是多个字段非空约束的添加只能使用列级约束(非空约束无表级约束)
为已存在表中的字段添加非空约束
alter table student modify stu_sex varchar(1)not null;
使用ALTER TABLE语句删除非空约束
3、唯一约束:
唯一约束(UNIQUE,缩写QK):它规定了一张表中指定的某个字段的值不能重复,即这一字段的
每个值都是唯一的。如果想要某个字段的值不重复,那么就可以为该字段添加唯一约束。4、检查约束
检查约束(CHECK)用来限制某个字段的取值范围,可以定义为列级约束,也可以定义为表级约束。
MySQL8开始检查表级约束5、默认值约束
默认值约束(DEFAULT)用来规定字段的默认值。。如果某个被设置为DEFAULT约束的字段没插入具体指,
那么该字段的值将会被默认值填充。
默认值约束的设置与非空约束一样,也只能使用列级约束。6、字段值自动增加约束
自增约束(AUTO_INCREMENT)可以使表中某个字段的值自动增加。一张表中只能有一个自增长字段,
并且该字段必须定义了约束(该约束可以使主键约束、唯一约束以及自增长约束),如果自增长字段没有
定义约束,数据库会提示错误。
由于自增约束会自动生成唯一的ID,所以自增约束通常会配合主键使用,并且只适用于数据整型。一般情
况下,设置自增约束字段的值会从1开始,每增加一条记录,该字段的值就加1.
为已存在表中的字段添加自增约束
create table stu(stu_id int(10) primary key,stu_name varchar(3),stu_sex varchar(1));
使用ALTER TABLE语句删除自增约束
alter table stu modify stu_id int(10);