最近学习一点数据库的基本知识,被一个问题困惑了许久:主键是唯一的索引,那么为何一个表可以创建多个主键呢?
其实“主键是唯一的索引”这话有点歧义的。举个例子,我们在表中创建了一个ID字段,自动增长,并设为主键,这个是没有问题的,因为“主键是唯一的索引”,ID自动增长保证了唯一性,所以可以。
此时,我们再创建一个字段name,类型为varchar,也设置为主键,你会发现,在表的多行中你是可以填写相同的name值的,这岂不是有违“主键是唯一的索引”这句话么?
所以我才说“主键是唯一的索引”是有歧义的。应该是“当表中只有一个主键时,它是唯一的索引;当表中有多个主键时,称为复合主键,复合主键联合保证唯一索引”。
为什么自增长ID已经可以作为唯一标识的主键,为啥还需要复合主键呢。因为,并不是所有的表都要有ID这个字段啊哈哈,比如,我们建一个学生表,没有唯一能标识学生的ID,怎么办呢,学生的名字、年龄、班级都可能重复,无法使用单个字段来唯一标识,这时,我们可以将多个字段设置为主键,形成复合主键,这多个字段联合标识唯一性,其中,某几个主键字段值出现重复是没有问题的,只要不是有多条记录的所有主键值完全一样,就不算重复。

1、数据库的每张表只能有一个主键,不可能有多个主键。
2、所谓的一张表多个主键,我们称之为联合主键。
注:联合主键:就是用多个字段一起作为一张表的主键。
3、主键的主键的作用是保证数据的唯一性和完整性,同时通过主键检索表能够增加检索速度。

MySQL联合主键解释相关推荐

  1. mysql 联合主键_Mysql 创建联合主键

    Mysql 创建联合主键 2008年01月11日 星期五 下午 5:21 使用primary key (fieldlist) 比如: create table mytable ( aa int, bb ...

  2. mysql联合主键是不是索引_MySQL:联合主键、索引

    MySQL数据库用联合主键.用两张表测试. # 1分钟数据表 CREATE TABLE md_1min2( `d_1min` DATETIME(3), `code` CHAR(16), `open` ...

  3. mysql联合主键语句6_初探SQL语句复合主键与联合主键

    一.复合主键 所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键. 比如 create table test ( name varchar(19), id nu ...

  4. mysql联合主键_初探SQL语句复合主键与联合主键

    一.复合主键 所谓的复合主键 就是指你表的主键含有一个以上的字段组成,不使用无业务含义的自增id作为主键. 比如 create table test ( name varchar(19), id nu ...

  5. mysql 联合主键重复数据库_联合主键和复合主键有什么区别

    联合主键和复合主键有什么区别 发布时间:2020-07-11 09:52:20 来源:亿速云 阅读:171 作者:Leah 这期内容当中小编将会给大家带来有关联合主键和复合主键有什么区别,文章内容丰富 ...

  6. mysql 联合主键_深入理解Mysql索引底层数据结构与算法,背后的故事

    引言 索引是帮助MySQL高效获取数据的排好序的数据结构 索引数据结构对比 二叉树 左边子节点的数据小于父节点数据,右边子节点的数据大于父节点数据.如果col2是索引,查找索引为89的行元素,那么只需 ...

  7. mysql 联合主键优缺点_mysql索引的类型和优缺点

    mysql索引的类型和优缺点 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针. 注:[1]索引不是万能的!索引可以加快数据检索操作,但 ...

  8. mysql 联合主键 加锁_MySQL 加锁处理分析

    背景 MySQL/InnoDB的加锁分析,一直是一个比较困难的话题.我在工作过程中,经常会有同事咨询这方面的问题.同时,微博上也经常会收到MySQL锁相关的私信,让我帮助解决一些死锁的问题.本文,准备 ...

  9. mysql联合主键,也就是两个数据字段一起做主键的情况

    一个数据表,需要两个字段联合起来一块做主键的时候.举例如下: 直接用sql语句的话如下 ALTER TABLE `表名` ADD PRIMARY KEY ( `表中字段名1` , `表中字段名2` ) ...

  10. mysql联合主键和单一主键

    索引分单列索引和组合索引.单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引.组合索引,即一个索包含多个列. MySQL索引类型包括:   (1)普通索引 这是最基本的索引, ...

最新文章

  1. 新闻网站项目django--注册页
  2. 判断出栈顺序的合法性(面试题)
  3. 显示point data的时均值注意事项
  4. 35岁前务必成功的12级跳
  5. 老外听到哪些中式英文是崩溃的?(转自外贸Jackson)
  6. linux 丢包排查思路简述(tcp+rdma)
  7. ORA-00257+mysql_ORA-00257错误的解决办法
  8. 网页嵌入对象(图片、视频、网页)
  9. 高仿快递100--实战之RadioGroup和RadioButton应用
  10. 速修复!VMware vCenter Server 所有版本受严重的 RCE 漏洞影响
  11. 还在使用集合类完成这些功能?不妨来看看 Guava 集合类!!!
  12. android QQ好友分享
  13. 2022华为春招面试经历
  14. git-ftp 用git管理ftp空间
  15. java多线程并发基础汇总一
  16. matlab聚类分析实例的博客,基于Matlab的模糊聚类分析及其应用 含实例应用.pptx
  17. 【Linux rar,unrar命令安装详细实践】
  18. 将word的题注从Fig.改为Figure
  19. Matlab图片重命名
  20. 企业级SaaS CRM管理系统产品拆解:纷享销客

热门文章

  1. SpringBoot @EnableAutoConfiguration exclude属性失效
  2. 【2021全国高校计算机能力挑战赛Python题目】17.学科竞赛 现有六门功课(语文、数学、物理、化学、政治、历史)的成绩,现在需要从中选拔优秀同学参加如下学科竞赛
  3. 编写TaskMgr.exe的时候学习的知识点
  4. 日期、时间、格式、补零(0、〇)操作、length、String、slice、getFullYear、getMonth、getDate、getHours、getMinutes、getSeconds
  5. CDN与智能DNS原理和应用 - 学习/实践
  6. KVM--virsh虚拟机的日常操作(开关,挂起虚拟机,导配置文件,磁盘增容,转化磁盘格式等)
  7. 嵌入式系统开发-麦子学院(3)——Linux C初级编程1
  8. Photoshop制作3D水晶按钮
  9. 第十七周助教工作总结——NWNU李泓毅
  10. android app 图片资源,Android App 瘦身总结 第一章 图片资源的优化处理