文章目录
- 第四章:
- 4.MySQL约束
- 4.1 主键约束
- 4.1.1 添加单列主键
- 4.1.2 添加多列主键(联合主键)
- 4.1.3 通过修改表结构添加主键
- 4.1.4 删除主键约束
- 4.1.5 自增长约束
- 特点
- 4.1.6 指定自增字段初始值 - 创建表时指定
- 4.1.7 指定自增字段初始值 - 创建表之后
- 4.1.8 delete与truncate删除自增列的区别
- 4.2 非空约束
- 4.2.1 删除非空约束
- 4.3 唯一约束
- 4.3.1 删除唯一约束
- 4.4 默认约束
- 4.4.1 删除默认约束
- 4.5 零填充约束
第四章:
4.MySQL约束
约束(constraint)实际上是表中数据的限制条件。
作用:保证表中的记录完整性和有效性。
分类:
-
主键约束:primary key
-
自增长约束:auto_increment
-
非空约束:not null
-
唯一性约束:unique
-
默认约束:default
-
零填充约束:zerofill
-
外键约束:foreign key
4.1 主键约束
关键字:primary key
-
它的值能唯一地标识表中的每一行,方便在RDBMS在尽快找到某一行
-
主键约束列不允许重复,也不允许出现空值
-
每个表最多只允许一个主键
-
创建主键约束时,系统默认会在所在列和列组合上建立对应的唯一索引
操作:
-
添加单列主键
-
添加多列联合主键
-
删除主键
4.1.1 添加单列主键
语法1:create table 表名(
.... <字段名><数据类型> primary key....
);
语法2:create table 表名(
....[constraint <约束名>] primary key [字段名]
);
- 主键约束的列非空且唯一
4.1.2 添加多列主键(联合主键)
-
一张表只可有一个主键,联合主键也是一个主键
-
主键由多个字段组成时,不可直接在字段名后声明主键约束
语法:create table 表名(
....primary key (字段1,字段2, 字段3,.....)
);
- 联合主键的各列,每一列都不可为空
4.1.3 通过修改表结构添加主键
语法:create table 表名(
....
);
alter table <表名> add primary key (字段列表);
4.1.4 删除主键约束
语法:alter table <数据表名> drop primary key;
4.1.5 自增长约束
语法:字段名 数据类型 auto_increment
特点
-
auto_increment初始值为1,每新增一条记录,字段值自动加1
-
一个表中只有一个字段有auto_increment约束,且该字段需有唯一索引,以避免序号重复
-
auto_increment约束的字段必须具备NOT NULL属性
-
auto_increment约束的字段只能是整型类型
-
auto_increment约束的字段最大值受该字段的数据类型约束,若达到上限,auto_increment就会失效
4.1.6 指定自增字段初始值 - 创建表时指定
4.1.7 指定自增字段初始值 - 创建表之后
4.1.8 delete与truncate删除自增列的区别
-
delete数据之后自动增长从断点开始
-
truncate数据之后自动增长从默认起始值开始
4.2 非空约束
- MySQL非空约束指定字段的值不可为空。
语法1:<字段名><数据类型> not null;
语法2:alter table 表名 modify 字段 类型 not null;
4.2.1 删除非空约束
4.3 唯一约束
- 唯一约束指所有记录中的字段值不可重复出现
语法1:<字段名><数据类型> unique
语法2:alter table 表名 add constraint 约束名 unique(列);
4.3.1 删除唯一约束
语法:alter table <表名> drop index <唯一约束名>;
4.4 默认约束
- 指定某列的默认值
语法1:<字段名> <数据类型> default <默认值>;
语法2:alter table 表名 modify 列名 类型 default 默认值;
4.4.1 删除默认约束
语法:alter table <表名> change column <字段名> <类型> default null;
4.5 零填充约束
-
插入数据时,若该字段值的长度小于定义长度时,会在该值前补上0
-
zerofill默认为int(10)
-
使用zerofill时,默认会加unsigned属性,使用该属性后,数值范围是原来的2倍