文章目录
本文内容仅在 MariaDB-10.2.15 版本下验证,其它环境下可能略有差异。
简单来说,约束是为了实现业务规则、保证数据的完整性,索引是为了查询高效,二者原本是两个不同的东西,只是在 mysql 中实现方法有类似之处,所以经常会让人感到迷惑。
一、约束(Constraint)
约束,是为了实现非空、非重等常见业务规则,在定义数据时对表或某些字段增加的特定的约束规则。
常见的约束类型有主键约束、唯一约束、非空约束、默认值约束、外键约束等。
1、主键约束(primary key)
- primary key,用于定义表的主键,是唯一确定表中每一条记录的标识符
- 主键不能为空,也不能重复
- 一张表中只能有一个主键
设置主键:
- 创建表的同时设置主键
create table student1 (
sid int(10) primary key, -- 对 sid 字段设置主键约束
sname varchar(20) not null -- 对 sname 字段设置非空约束
)
- 创建表以后,追加主键
create table student2(
sid int(10) not null,
sname varchar(10) not null
)
# 追加主键,并设置主键名称
ALTER TABLE student2 ADD CONSTRAINT pks2 PRIMARY KEY(sid);
<