MySQL主键和唯一键的区别
创始人
2024-05-02 12:19:06
0

主键和唯一键基本知识参考这篇文章  MySQL表的约束 ,本篇文章主要是谈一谈主键和唯一键的区别从而更好的理解唯一键和主键。

在上篇文章中已经提到

  • 主键: primary key 用来唯一的约束该字段里面的数据,不能重复,不能为空一张表中最多只能有一个主键;主键所在的列通常是整数类型。
  • 唯一键(unique)的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。

从技术角度来看的话二者就是一个可以为空一个不能为空,也是比较好证明的。我们只需建个表格那数据插入即可证明,在上篇文章中我们也已经实验过了。这篇文章我们来说点不一样的。

我们先来想一个问题,已经存在了主键来约束数据不能重复为什么还要有唯一键存在呢?

其实主键和唯一键并不冲突,在一个表中可以有一个主键,也可以同时具有唯一键。例如我们创建一个学生表,我们人身上是有很多具有唯一性的属性的如学号、身份证号、手机号、qq号、以及各种社交账号。同时也有一些不具有唯一性的属性如姓名、身高、体重、籍贯、年龄等等。若是只有主键存在的话那么,我们身上的其他具有唯一性的属性怎么来保证。

举个例子:

mysql> create table student( 
id int unsigned primary key comment '学号', 
id_card int comment '身份证号' 
);mysql> insert into student(id, id_card) values(10, 123456);
mysql> insert into student(id, id_card) values(11, 1234567);
mysql> insert into student(id, id_card) values(12, 1234567);

 此时我们想找一个学生,但是我们只知道他的身份证号为1234567。可是我们查找的时候确发现身份证号为1234567的学生不止一人。从现实生活中来说每个人的省份证号是绝对不会出现重复的,而数据库本身是一个对数据约束非常严格的技术,是绝对不会让这种情况发生的。故此时我们可以将主键之外的具有唯一性的字段用唯一键来约束。

关于主键和唯一键我们可以简单理解成,主键更多的是标识唯一性的。而唯一键更多的是保证在业务上,不要和别的信息出现重复。另外主键不是设置了主键属性才成为主键的,而是对应的属性被选择成为主键。 通过上面的例子我们可以得出结论,主键和唯一键其实是协同工作的,有些场景下需要二者一起协同工作才能更好的来对表格进行约束,让我们的表格在业务上更加合理。而区别的话从技术上来说主键不能为空,而唯一键可以为空。

        

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...