举杯邀月

mysql 主键和唯一索引的区别有哪些?

摘要:Mysql中最长见的主键与唯一索引,他们有什么区别和相同点呢?其实这也算是一个常识性的问题,今天记录一下。

在Mysql中创建表的时候,我们可以把某个字段设置为主键或者设置为唯一索引,那么,主键和唯一索引有什么不同呢?

区别

1、主键是一种约束,唯一索引是一种索引,两者本质上是不同的。
2、主键一定是唯一索引,唯一索引并不一定是主键,主键在创建时,已经默认为空值 + 唯一索引。
3、主键不允许为空值,而唯一索引可以。
4、索引可以提高查询速度吗,而主键不可以。

相似处

1、主键和唯一索引都可以有多列。

创建方式

CREATE TABLE `test` (
  `id` int(11) NOT NULL,
  `field` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),                        //创建索引
  UNIQUE KEY `test` (`field`) USING BTREE    //创建唯一索引
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
1
2
3
4
5
6
1
2
3
4
5
6
1
2
3
4
5
6
1
2
3
4
5
6

个人总结

主键更适合做自增数据时的唯一值,所以在建表的时候一般会设置一个主键并设置自增。而唯一索引更适合做唯一的标示,比如身份证号、登陆账号的唯一性,确保不会重复。

另外也提到了 主键在创建时,已经默认为空值 + 唯一索引,所以主键一般是不需要再单独创建索引的。

作者:举杯邀月

出处: http://www.hug-code.cn/archives/5fca038aa5ced.html

2020-08-19 标签: mysql