【转载】主键的唯一性和联合主键概念辨析

primary key和unique key
首先看建表语句

CREATE TABLE `test_key` (
  `id` int(11) NOT NULL,
  `cname` varchar(10) DEFAULT NULL,
  `cage` int(11) DEFAULT NULL,
  `c1` int(11) DEFAULT NULL,
  `c2` int(11) DEFAULT NULL,
  `d1` int(11) DEFAULT NULL,
  `d2` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `c1` (`c1`,`c2`),
  UNIQUE KEY `d1` (`d1`,`d2`)
) 

从建表SQL中,我们可以看到,primary key是只能有一个的,而unique key是可以有多个的。假使你想在一张表中创建多个primary key是不允许的,否则会报Multiple primary key defined的错误。

key的作用

  • 约束
    约束是对字段的约束,例如primary key是非空并且唯一的约束
  • 索引
    索引,类似于书的目录,可以让我们更快的查询到自己想要的内容

转载地址: https://blog.csdn.net/qq_34741578/article/details/89393578

最近学习一点数据库的基本知识,被一个问题困惑了许久:主键是唯一的索引,那么为何一个表可以创建多个主键呢?
其实“主键是唯一的索引”这话有点歧义的。举个例子,我们在表中创建了一个ID字段,自动增长,并设为主键,这个是没有问题的,因为“主键是唯一的索引”,ID自动增长保证了唯一性,所以可以。
此时,我们再创建一个字段name,类型为varchar,也设置为主键,你会发现,在表的多行中你是可以填写相同的name值的,这岂不是有违“主键是唯一的索引”这句话么?
所以我才说“主键是唯一的索引”是有歧义的。应该是“当表中只有一个主键时,它是唯一的索引;当表中有多个主键时,称为联合主键,联合主键联合保证唯一索引”。
为什么自增长ID已经可以作为唯一标识的主键,为啥还需要联合主键呢。因为,并不是所有的表都要有ID这个字段啊哈哈,比如,我们建一个学生表,没有唯一能标识学生的ID,怎么办呢,学生的名字、年龄、班级都可能重复,无法使用单个字段来唯一标识,这时,我们可以将多个字段设置为主键,形成复合主键,这多个字段联合标识唯一性,其中,某几个主键字段值出现重复是没有问题的,只要不是有多条记录的所有主键值完全一样,就不算重复。

联合主键一般用于在一个字段可能有重复的情况下,用另一个字段去保持其唯一性

比如有两个字段:name , phone
name 字段是可能重复的,而 phone 是唯一的
这时在创建数据表的时候可以在末尾加上:

PRIMARY KEY(name, phone) 

表示用 name 与 phone 构成联合主键,复合主键以保持记录的唯一性

1、数据库的每张表只能有一个主键,不可能有多个主键。
2、所谓的一张表多个主键,我们称之为联合主键。
*注:联合主键:就是用多个字段一起作为一张表的主键。*
3、主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 了解SQL 1.1 数据库基础 ​ 学习到目前这个阶段,我们就需要以某种方式与数据库打交道。在深入学习MyS...
    锋享前端阅读 4,969评论 0 1
  • 索引 数据库中的查询操作非常普遍,索引就是提升查找速度的一种手段 索引的类型 从数据结构角度分 1.B+索引:传统...
    一凡呀阅读 8,263评论 0 8
  • 个人专题目录[https://www.jianshu.com/p/140e2a59db2c] 索引是一种特殊的文件...
    Java及SpringBoot阅读 12,093评论 0 2
  • 电视机在我家基本是个摆设,上次我们一家三口在一起看电视还是春晚时候。 现在电视机基本不打开,因为念上高中了,得给她...
    素馨若霞阅读 1,328评论 0 11
  • 晨光笼罩,微风轻拂, 你从拱门走出来, 那一眼,已是十年。 为了你, 我去听周杰伦的歌, 那些呻吟的歌词, 都是我...
    麻花饺子阅读 1,733评论 1 2

友情链接更多精彩内容