旗下导航:搜·么
当前位置:网站首页 > MySQL教程 > 正文

团结主键和复合主键的区分【MySQL教程】,主键

作者:搜教程发布时间:2019-12-01分类:MySQL教程浏览:70评论:0


导读:一、复合主键所谓的复合主键就是指你表的主键含有一个以上的字段构成,不运用无营业寄义的自增id作为主键。比方:createtabletest(...
一、复合主键

所谓的复合主键 就是指你表的主键含有一个以上的字段构成,不运用无营业寄义的自增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网别的相干文章!

标签:主键


欢迎 发表评论: