首页 数据库 mysql教程 联合主键和复合主键的区别

联合主键和复合主键的区别

Aug 28, 2019 pm 02:22 PM
主键

一、复合主键

所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键。

例如:

create table test 
( 
   name varchar(19), 
   id number, 
   value varchar(10), 
   primary key (name,id) 
)
登录后复制

上面的name和id字段组合起来就是你test表的复合主键 ,它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性 ,一般情况下,主键的字段长度和字段数目要越少越好 。

这里就会有一个疑惑?  主键是唯一的索引,那么为何一个表可以创建多个主键呢?

其实“主键是唯一的索引”这话有点歧义的。举个例子,我们在表中创建了一个ID字段,自动增长,并设为主键,这个是没有问题的,因为“主键是唯一的索引”,ID自动增长保证了唯一性,所以可以。

此时,我们再创建一个字段name,类型为varchar,也设置为主键,你会发现,在表的多行中你是可以填写相同的name值的,这岂不是有违“主键是唯一的索引”这句话么?

所以我才说“主键是唯一的索引”是有歧义的。应该是“当表中只有一个主键时,它是唯一的索引;当表中有多个主键时,称为复合主键,复合主键联合保证唯一索引”。

为什么自增长ID已经可以作为唯一标识的主键,为啥还需要复合主键呢。因为,并不是所有的表都要有ID这个字段,比如,我们建一个学生表,没有唯一能标识学生的ID,怎么办呢,学生的名字、年龄、班级都可能重复,无法使用单个字段来唯一标识,这时,我们可以将多个字段设置为主键,形成复合主键,这多个字段联合标识唯一性,其中,某几个主键字段值出现重复是没有问题的,只要不是有多条记录的所有主键值完全一样,就不算重复。

二、联合主键

联合主键顾名思义就是多个主键联合形成一个主键组合(主键原则上是唯一的,别被唯一值所困扰。)  

联合主键的意义:用2个字段(或者多个字段,后面具体都是用2个字段组合)来确定一条记录,说明,这2个字段都不是唯一的,2个字段可以分别重复,这么设置的好处,可以很直观的看到某个重复字段的记录条数。

一个简单的例子 :

主键A跟主键B组成联合主键 

主键A跟主键B的数据可以完全相同,联合就在于主键A跟主键B形成的联合主键是唯一的。 
下例主键A数据是1,主键B数据也是1,联合主键其实是11,这个11是唯一值,绝对不充许再出现11这个唯一值。(这就是多对多关系) 

主键A数据 主键B数据 
1      1 
2      2 
3      3

主键A与主键B的联合主键值最多也就是

11 
12 
13 
21 
22 
23 
31 
32 
33

总结: 以我来看复合主键就是含有一个以上的字段组成,如ID+name,ID+phone等,而联合主键要同时是两个表的主题组合起来的。这是和复合主键最大的区别!

相了解更多相关问题请访问PHP中文网:mysql视频教程

以上是联合主键和复合主键的区别的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

mysql逻辑主键是什么 mysql逻辑主键是什么 Jul 10, 2023 pm 01:46 PM

mysql逻辑主键是指在数据库中用于标识一条记录的字段或字段组合,但是它并不是唯一的。逻辑主键通常被用于数据查询和数据操作。逻辑主键可以是任何具有标识性质的字段,比如在用户表中,用户名可以作为逻辑主键,因为它可以用于标识一条记录,但是它并不是唯一的。

红米RedmiK70Pro如何设置返回键和主键? 红米RedmiK70Pro如何设置返回键和主键? Feb 23, 2024 pm 01:40 PM

手机是现在中轻年人的必备之物,当然每个年龄段的人对手机需求是不一样的。RedmiK70Pro作为现在比较火爆的机型之一,内部拥有非常多样的功能以及服务,可以满足不同年龄段消费者们的需求。红米RedmiK70Pro怎么设置返回键和主键?也是需要了解清楚的,清楚之后才会决定要不要购买这款手机,那就跟随小编一起来看看下面的内容吧!红米RedmiK70Pro怎么设置返回键和主键?要访问手机的设置菜单,您可以通过下拉通知栏或在主屏幕上查找设置图标来打开设置界面。在设置界面中,查找并点击“按钮”或“导航栏”

如何让MySQL外键和主键自动关联起来? 如何让MySQL外键和主键自动关联起来? Mar 15, 2024 pm 12:54 PM

如何让MySQL外键和主键自动关联起来?在MySQL数据库中,外键和主键是非常重要的概念,它们能够帮助我们在不同表之间建立关联关系,保证数据的完整性和一致性。在实际的应用过程中,经常需要让外键自动关联到对应的主键上,以避免数据不一致的情况发生。下面将介绍如何通过具体的代码示例实现这一功能。首先,我们需要创建两个表,一个表作为主表,另一个表作为从表。在主表中创

荣耀90GT怎么设置返回键和主键? 荣耀90GT怎么设置返回键和主键? Feb 12, 2024 am 09:48 AM

随着时代的快速发展,现在的手机技术也是在不断进步的,以前手机会有各种按键,现在逐渐被淘汰了,不过还是有很多人习惯使用按键来控制手机,那么荣耀90GT怎么设置返回键和主键?下面就来一起看看吧!荣耀90GT怎么设置返回键和主键?荣耀90GT是一款华为手机,设置返回键和主键的方法如下:步骤一:打开设置:在手机桌面上找到“设置”图标,点击进入设置界面。步骤二:寻找“系统与更新”选项:在设置界面中,向下滑动屏幕,找到并点击进入“系统与更新”选项。步骤三:进入导航栏设置:在系统与更新界面中,向下滑动屏幕,找

荣耀X50Pro怎么设置返回键和主键? 荣耀X50Pro怎么设置返回键和主键? Mar 18, 2024 am 11:34 AM

荣耀X50Pro是最近刚刚正式发布的一款旗舰手机,这款手机采用了全新的外观设计,颜值确实是非常不错的,除了颜值之外这款手机的性能配置也很出色,那么荣耀X50Pro怎么设置返回键和主键?下面就让我们来一起看看吧!荣耀X50Pro怎么设置返回键和主键?1、在主屏幕上找到“设置”图标,点击“系统和更新”功能选项;2、点击系统和更新功能项目中的“系统导航方式”;3、荣耀手机提供三种返回键设置,可以根据自己的设置进行调整:荣耀X50Pro这款手机设置返回键和主键的方法还是很简单的,大家可以按照上面的步骤来

mysql主键用什么类型 mysql主键用什么类型 Jul 18, 2023 pm 03:11 PM

mysql主键可以用整数类型、自增长整数类型、UUID类型或者字符串类型。类型详细介绍:1、整数类型,最常见的主键类型之一,在MySQL中,可以使用不同的长度;2、自增长整数类型,可以自动分配唯一的整数值作为主键,这个类型非常适合用作主键,特别是在需要高并发插入数据的场景中;3、UUID类型,一种128位的全局唯一标识符,可以确保数据的全局唯一性;4、字符串类型,不推荐使用等。

红米RedmiK70怎么打开返回键和主键? 红米RedmiK70怎么打开返回键和主键? Feb 23, 2024 am 11:40 AM

RedmiK70是很多用户们都在使用的机型,这款手机自从发布以来一直都保持着很不错的口碑,性价比超高而且还采用了很强大的性能配置,而且有很多人性化的功能可以让大家自己选择,比如说设置返回键和主键,但是具体要怎么设置呢?红米RedmiK70怎么设置返回键和主键?打开手机上的“设置”应用。在设置页面中向下滑动,找到并点击“额外设置”。进入额外设置页面后,选择“按钮和手势快捷方式”。在按钮和手势快捷方式设置中,您会看到“返回键”和“主键”的调整选项。点击“返回键”选项,您可以选择启用或禁用硬件返回键,

一文聊聊MySQL中的自增主键 一文聊聊MySQL中的自增主键 Jul 05, 2022 am 10:08 AM

本篇文章带大家深入了解下MySQL中的自增主键,希望对大家有所帮助!

See all articles