当前位置:首页 > MySQL教程 > 正文内容

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

搜教程4年前 (2019-12-01)MySQL教程173
一、复合主键

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

扫描二维码推送至手机访问。

版权声明:本文由搜教程网发布,如需转载请注明出处。

本文链接:https://www.sojiaocheng.cn/16244.html

标签: 主键
分享给朋友:

“团结主键和复合主键的区分【MySQL教程】,主键” 的相关文章

MySQL 5.7 深度剖析: 半同步复制手艺【MySQL教程】,MySQL,复制,同步

MySQL 5.7 深度剖析: 半同步复制手艺【MySQL教程】,MySQL,复制,同步

MySQL 5.7 深度剖析: 半同步复制手艺 复制架构衍生史 在谈这个特征之前,我们先来看看MySQL的复制架构衍生史。 MySQL的复制分为四种: 一般的replication,异步同步。 搭建简朴,运用非常普遍,从mysql降生之初,就产生了这类架构,机能非常好,可谓非常成熟。...

MySQL中的常用工具的实例总结【MySQL教程】,MySQL,常用工具,总结

MySQL数据库以体积小、速度快、整体具有本钱低等长处,深受宽大中小企业的喜欢,下面这篇文章重要给人人引见了关于MySQL中经常使用东西的相干材料,须要的朋友们能够参考进修,下面来一同看看吧。 媒介 本文重要给人人引见了关于MySQL经常使用东西的相干内容,分享出来供人人参考进修,下面话不多...

MySQL中关于prepare道理的详解【MySQL教程】,prepare,MySQL,详解

这篇文章重要引见了MySQL prepare的相干内容,包括prepare的发生,在服务器端的实行历程,以及jdbc对prepare的处置惩罚以及相干测试,须要的朋侪能够了解下。愿望对人人有所协助。 Prepare的优点 Prepare SQL发生的缘由。首先从mysql服务器实行sql...

Mysql相干操纵有哪些【MySQL教程】,Mysql,哪些,相关

Mysql相干操纵有哪些【MySQL教程】,Mysql,哪些,相关

1》建立数据库:   语法:create database 数据库名;   语法:show databases 检察已存在数据库   举例:    Mysql->create database zytest; 注重每一条要以;号末端     Mysql->show d...

运用union和in哪一个效率高【MySQL教程】,union,效率高,哪个

一直都认为是in的效力要高,然则此次确有点蒙圈。 SELECT * FROM runinfo WHERE status in (0,2,1,3,4,7,9,10);   这个查询的效力是,经常是1秒多。 mysql> SELECT * FROM runinfo WHERE sta...

MySQL慢查询日记相干的设置和运用【MySQL教程】,MySQL,配置,相关

MySQL慢查询日记相干的设置和运用【MySQL教程】,MySQL,配置,相关

MySQL慢查询日记供应了凌驾指定时刻阈值的查询信息,为机能优化供应了重要的参考根据,是一个异常有用的功用,MySQL慢查询日记的开启和设置异常简朴,能够指定纪录的文件(或许表),凌驾的时刻阈值等就能够纪录到慢sql了,真话讲,相比较sqlserver的trace或许扩大事宜(虽然此两者的作用并不...