以下文章来源于何先振,责编小何
确保数据的唯一性,可以使用SQL语法:unique添加唯一约束
特点:
同一个表可以有多个唯一约束。
唯一约束可以是某一个列的值唯一,也可以多个列组合的值唯一。
唯一约束允许列值为空。
在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同。
MySQL会给唯一约束的列默认创建一个唯一索引。
添加方式:
create table时添加约束,一种以列级方式添加,一种以表级方式添加。

添加完,可以查看是否添加成功。

也可以通过MySQL的默认表进行查询唯一约束

添加完一条数据

如果继续添加id重复,就会报错,因为添加了唯一约束。

email字段也不能重复添加。

不过唯一约束可以添加null值,并且可以添加多个不限制重复。

alter table时添加约束:
第一种方式:

注意,如果有重复数据,需要先改成不重复。否则会添加唯一约束不成功。


先把全部工资弄成null,因为唯一约束允许为空。


再执行添加唯一约束,此时没有报错

添加成功。

第二种方式添加唯一约束:
通过modify添加

添加成功

复合唯一约束
多个列可以一起加唯一约束


也可以通过另外一种方式添加

删除唯一约束
添加唯一约束的列上会自动创建唯一索引,要删除唯一约束只能通过删除唯一索引的方式删除。
删除时需要指定删除的索引名,索引名和约束名一样,如果创建唯一约束时未指定名称,如果是单列,就默认和列名相同。如果是组合列,那么就默认第一个列名。
删除唯一索引,先查看约束名称

约束名就是唯一索引名,通过唯一索引名进行删除。

此时查看,已经被删除了。

主键约束,用来唯一标识表中的一行记录。通过SQL语法:primary key表示。
特点:
主键约束相当于唯一约束+非空约束的组合,主键约束不允许重复,也不允许出现空值。
主键约束对应着表的一列或者多列(复合主键)。
如果是多列组合的复合主键约束,那么这些列都不允许为空值,并且组合的值不允许重复。
MySQL的主键名总是primary
当创建主键约束时,系统默认会在所在的列或组合上建立主键索引,如果可以根据主键查询,查询效率会很高。如果删除主键约束,主键约束对应的主键索引就会自动删除。
需要注意不要修改主键字段的值,因为主键是数据记录的唯一标识,如果修改了主键的值,会破坏数据的完整性。
举栗子:
create table时添加主键约束:
添加方式一,列级主键约束

添加方式二,表级主键约束

添加复合主键

alter table时添加主键约束:
先创建表,没添加主键约束


删除主键约束,在实际开发中不会删除主键约束
