团结主键和复合主键的区分【MySQL教程】,主键
所谓的复合主键 就是指你表的主键含有一个以上的字段构成,不运用无营业寄义的自增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等,而团结主键要同时是两个表的主题组合起来的。这是和复合主键最大的区分!
相相识更多相干题目请接见ki4网:mysql视频教程
以上就是团结主键和复合主键的区分的细致内容,更多请关注ki4网别的相干文章!