在MySQL中主要有6种约束:主键约束、外键约束、唯一约束、检查约束、非空约束和默认值约束。
1. 主键约束(PRIMARY KEY)
主键约束是使用最频繁的约束。在设计数据表时,一般情况下,为了方便更快地查找表中的记录,都会要求在表中设置一个主键。主键是表的一个特殊字段,该字段能唯一标识该表中的每条信息。
主键分为单字段主键和多字段联合主键,并且在使用主键时需要注意以下几点:
-
一个table只能定义一个主键;
-
主键值必须唯一标识表中的每一行,且不能出现null的情况,即表中不能存在有相同主键的两行或两行以上数据,严格遵守唯一性原则;
-
一个字段名只能在联合主键字段表中出现一次;
-
联合主键不能包含不必要的多余字段,以满足最小化原则。
1.1 在建表时设置主键约束:
1.1.1 设置单字段主键:
1)在定义字段的同时设置主键约束,语法格式:
例 在数据库中创建学生信息数据表st_info,主键为st_id, SQL语句以及运行结果如下:
2)在定义完所有字段之后指定部件,语法格式:
例 在数据库中创建学生信息数据表st_info2,主键为st_id, SQL语句以及运行结果如下:
1.1.2 设置联合主键:
联合主键,即一张表的主键由多个字段组成。
比如在学生信息表中,可以设置st_id跟name来作为联合主键,语法格式以及SQL语句实现为:
【注】在设置联合主键时不能直接在每个字段名后面声明主键约束。
1.2 在修改表时添加主键约束:
假如在创建表是没有设置主键约束,还可以在修改表时进行添加,但是设置成主键约束的字段不允许有空值。语法格式:
将st_id与name设置成主键:
1.3 删除主键约束:
当一个表中不需要主键约束时,就需要从表中将其删除。
例 删除st_info4数据表中的主键约束:
【补充】 MySQL主键自增长 :
在MySQL里,当主键定义为自增长后,主键的值就不需要自己再输入数据了,而是由数据库系统根据定义自动赋值,每增加一条记录,主键就会自动以相同的步长进行增长。
自增长的关键字是AUTO_INCREMENT,语法格式为:
【注】
-
在默认的情况下,AUTO_INCREMENT的初始值为1,每新增一条记录,字段值就会自动加1;
-
AUTO_INCREMENT约束的字段必须是非空的,即具有not null属性;
-
一个表中只能有一个字段使用AUTO_INCREMENT约束,且该字段必须有唯一索引,以避免序号重复(即为主键或主键的一部分);
-
AUTO_INCREMENT约束的字段只能是整数类型;
-
AUTO_INCREMENT约束字段的最大值收该字段的数据类型约束,如果达到上限,AUTO_INCREMENT就会失效。
例 创建学生信息表st_info5,指定st_id字段自增,
此时可以不用再手动插入st_id的数据:
但是在设置学号的时候不一定是从1开始的,比如从2000150001开始,则需要在建表之后设置自增的起始数据:
【注】如果在插入某一行数据产生了报错,则最终自增字段可能会出现不连续的情况。
参考资料:https://dev.mysql.com/doc/refman/8.0/en/where-optimization.html
End.
作者:爱数据助教
本文由爱数据助教整理发布,未经允许禁止转载,需要转载请微信联系授权(微信号:ishujiang)
- 我的微信公众号
- 微信扫一扫
- 我的微信公众号
- 微信扫一扫
评论