美文网首页
【转载】主键的唯一性和联合主键概念辨析

【转载】主键的唯一性和联合主键概念辨析

作者: 溪水散人 | 来源:发表于2020-03-19 10:18 被阅读0次

primary key和unique key
首先看建表语句

CREATE TABLE `test_key` (
  `id` int(11) NOT NULL,
  `cname` varchar(10) DEFAULT NULL,
  `cage` int(11) DEFAULT NULL,
  `c1` int(11) DEFAULT NULL,
  `c2` int(11) DEFAULT NULL,
  `d1` int(11) DEFAULT NULL,
  `d2` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `c1` (`c1`,`c2`),
  UNIQUE KEY `d1` (`d1`,`d2`)
) 

从建表SQL中,我们可以看到,primary key是只能有一个的,而unique key是可以有多个的。假使你想在一张表中创建多个primary key是不允许的,否则会报Multiple primary key defined的错误。

key的作用

  • 约束
    约束是对字段的约束,例如primary key是非空并且唯一的约束
  • 索引
    索引,类似于书的目录,可以让我们更快的查询到自己想要的内容

转载地址: https://blog.csdn.net/qq_34741578/article/details/89393578

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

联合主键一般用于在一个字段可能有重复的情况下,用另一个字段去保持其唯一性

比如有两个字段:name , phone
name 字段是可能重复的,而 phone 是唯一的
这时在创建数据表的时候可以在末尾加上:

PRIMARY KEY(name, phone) 

表示用 name 与 phone 构成联合主键,复合主键以保持记录的唯一性

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

相关文章

  • 【转载】主键的唯一性和联合主键概念辨析

    primary key和unique key首先看建表语句 从建表SQL中,我们可以看到,primary key是...

  • ADO.NET第一篇

    主键的作用是:保证每一条数据的唯一性。 主键的特点 1、主键不能重复。 2、主键不能为空。 主键的分类: 逻辑主键...

  • sql学习笔记3-约束

    主键约束(联合主键约束) 唯一性约束 非空约束 默认值约束 外键约束 1、主键约束 它能够唯一确定一张表中的一条记...

  • 2020-03-11 记录mongdb(3)

    基本操作: 文档主键 _id 文档主键的唯一性 支持所有数组类型(数组除外) 复合主键 对象主键 Ob...

  • 2-12 初涉主键约束

    PRIMARY KEY 主键约束 每张数据表只能存在一个主键 主键保证记录的唯一性 主键自动为NOT NULL

  • MySQL学习日记(12)主键约束

    主键约束 PRIMARY KEY 每张数据表中只能存在一个主键 主键保证记录的唯一性 主键自动为NOT NULL ...

  • mysql中的键和索引

    一、主键 索引 关系 1.主键:主键的唯一作用就是唯一标识表中的某一行数据。分为单一主键和联合主键: 单一主键:只...

  • 数据库入门

    基本概念 主键 主键是用来唯一定位记录的,在数据库中主键的数据是不可能相同的。 联合主键 实际上还允许通过多个字段...

  • 数据库 | MySQL | 9. 索引

    PRIMARY KEY是唯一性索引 添加表主键 删除&修改表主键 查看索引列表 添加普通索引 添加唯一性索引(设置...

  • Hibernate 注解方式设置联合主键

    使用 Annotation 设置联合主键有三种方式: 1. 方法一 主键类:将联合主键的字段单独放在类中,该类实现...

网友评论

      本文标题:【转载】主键的唯一性和联合主键概念辨析

      本文链接:https://www.haomeiwen.com/subject/ldekyhtx.html