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

mysql 联合主键和复合主键的区别,第1张

什么是复合主键?

所谓的复合主键就是指你表的主键含有一个以上的字段组成 

比如 

create table test 

   name varchar(19), 

   id number, 

   value varchar(10), 

   primary key (name,id) 

)

上面的name和id字段组合起来就是你test表的复合主键 

它的出现是因为你的name字段可能会出现重名,所以要加上ID字段这样就可以保证你记录的唯一性 

一般情况下,主键的字段长度和字段数目要越少越好

什么是联合主键? 

(主键原则上是唯一的,别被唯一值所困扰。) 

顾名思义就是多个主键联合形成一个主键组合 

一个简单的例子 

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

主键A跟主键B的数据可以完全相同(困扰吧,没关系),联合就在于主键A跟主键B形成的联合主键是唯一的。 

下例主键A数据是1,主键B数据也是1,联合主键其实是11,这个11是唯一值,绝对不充许再出现11这个唯一值。(这就是多对多关系) 

主键A数据 主键B数据 

11 

22 

33 

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

11 

12 

13 

21 

22 

23 

31 

32 

33

key 属性1. 如果Key是空的, 那么该列值的可以重复, 表示该列没有索引, 或者是一个非唯一的复合索引的非前导列2. 如果Key是PRI, 那么该列是主键的组成部分3. 如果Key是UNI, 那么该列是一个唯一值索引的第一列(前导列),并别不能含有空值(NULL)4. 如果Key是MUL, 那么该列的值可以重复, 该列是一个非唯一索引的前导列(第一列)或者是一个唯一性索引的组成部分但是可以含有空值NULL如果对于一个列的定义,同时满足上述4种情况的多种,比如一个列既是PRI,又是UNI那么"desc 表名"的时候,显示的Key值按照优先级来显示 PRI->UNI->MUL那么此时,显示PRI一个唯一性索引列可以显示为PRI,并且该列不能含有空值,同时该表没有主键一个唯一性索引列可以显示为MUL, 如果多列构成了一个唯一性复合索引因为虽然索引的多列组合是唯一的,比如ID+NAME是唯一的,但是没一个单独的列依然可以有重复的值只要ID+NAME是唯一的即可


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/8753016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-20
下一篇 2023-04-20

发表评论

登录后才能评论

评论列表(0条)

保存