MySQL中PRIMARY KEY、UNIQUE KEY、KEY的区别
背景知识
- key和index是一样的含义
在 MySQL 中 KEY 和 INDEX 是同义。那这个问题就可以简化为 PRIMARY KEY,UNIQUE KEY 和 INDEX 的区别。而这三者也正好是索引的划分,主键索引,唯一索引和普通索引(INDEX)。 - 使用
使用 KEY 来加速从数据库中读取数据。KEY 通常加在那些 JOIN, WHERE,和 ORDER BY 子句的列上。
(创建索引时,需要确保该索引是应用在 SQL 查询语句的条件(一般作为 WHERE 子句的条件)。 实际上,索引也是一张表,该 表保存了主键与索引字段,并指向实体表的记录。) - 索引的缺点
虽然索引提高了查询速度,却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更 新表时,MySQL不仅要保存数据,还要保存一下索引文件。
PRIMARY KEY 和 UNIQUE KEY 的区别
- 一张表只能有一个 PRIMARY KEY,但可以有很多 UNIQUE KEY。
- 当给一列设置为 UNIQUE KEY 之后,不能有两行在该列上有相同的数据。
- PRIMARY KEY 不允许有 NULL值,但是 UNIQUE KEY 可以。
- PRIMARY KEY 和 UNIQUE KEY 都是用来保证列上数据的为原型,都可以在一列或者多列上加。
- 同一张表 PRIMARY KEY 只能有一个, UNIQUE KEY可以有多个,PRIMARY KEY 不能有空值, UNIQUE KEY 可以有。如果 PRIMARY KEY 的1个或多个列为NULL,在增加PRIMARY KEY 时,列自动更改为 NOT NULL 。而UNIQUE KEY 对列没有要求是通过参考索引实施的,如果插入的值均为NULL,则根据索 引的原理,全NULL值不被记录在索引上,所以插入全NULL值时,可以有重复的,而其他的则不能插入重复值
总结和分类
- PRIMARY KEY 有两个作用,一是约束作用(constraint),用来规范一个存储主键和唯一性,但同时也在此key上建立了一个 索引;
- UNIQUE KEY 有两个作用,一是约束作用(constraint),规范数据的唯一性,但同时也在这个key上建立了一个索引;
- KEY 有一个作用,在这个key上建立了一个索引;
使用
PRIMARY KEY (`列名`)
UNIQUE KEY (`列名`)
KEY `列名` (`列名`)
版权声明:
作者:Teroun
链接:https://blog.bingxs.com/mysqlzprimarykeyuniquekeykeydqb.html
文章版权归作者所有,未经允许请勿转载。
THE END