首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL键,MUL与PRI对比UNI

在SQL中,MULPRIUNI是用于描述表中列的约束和索引类型的标记,尤其在创建表时通过SHOW CREATE TABLE命令查看表结构时,你会看到这些标记。下面是它们的含义对比:

MUL

  • 含义:表示该列是非唯一索引的一部分,也即该列可以有重复值,并且在该列上可以建立多个索引(但不是唯一索引)。
  • 使用场景:通常用于外键列,因为外键通常关联到其他表的主键,而主键是唯一的,但外键可以重复。
  • 索引类型:是非唯一索引。

PRI

  • 含义:表示该列是表的主键的一部分,也即该列的值必须是唯一的,并且不能为NULL。
  • 使用场景:用于定义表的主键,主键是表中数据的唯一标识符。
  • 索引类型:是唯一索引,并且是聚集索引(在InnoDB存储引擎中)。

UNI

  • 含义:表示该列是唯一索引的一部分,也即该列的值必须是唯一的,但可以包含NULL值(如果数据库支持NULL)。
  • 使用场景:用于确保某列的值在整个表中是唯一的,但不需要作为主键。
  • 索引类型:是唯一索引,但不一定是聚集索引。

对比

  • 唯一性PRIUNI都保证了列的唯一性,但PRI还保证了非NULL性,而UNI允许NULL值。
  • 索引类型PRI通常是聚集索引(在InnoDB中),而UNI可以是聚集或非聚集索引,具体取决于数据库的实现。
  • 用途PRI用于定义主键,UNI用于定义唯一约束,而MUL用于定义非唯一索引,通常与外键相关。

示例

假设有一个名为employees的表,其结构如下:

代码语言:javascript
复制
CREATE TABLE employees (
    id INT PRIMARY KEY,
    email VARCHAR(255) UNIQUE,
    department_id INT,
    FOREIGN KEY (department_id) REFERENCES departments(id)
);

在这个例子中:

  • id列是主键,所以它有PRI标记。
  • email列有唯一约束,所以它有UNI标记。
  • department_id列是外键,所以它有MUL标记,并且可能在departments表的id列上有索引。

总之,MULPRIUNI是SQL中用于描述列约束和索引类型的标记,它们在创建和维护数据库表结构时非常有用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SQL笔记(2)——MySQL的表操作与索引

; 这里 Key为MUL主要是因为这两个字段有外键约束,约束其与另一个表的对应字段要对应; 查看某个表的某一列的结构 mysql> describe score id; +-------+----...在SQL中,修改表中某一列的数据类型是一个重要的操作,因为数据类型决定了该列可以存储的数据种类和范围。...MUL:非唯一索引,该索引包括多个重复的键值时,Key属性值就会显示为mul。 UNI: 表示该列是唯一键。唯一键也可以用于唯一标识表中的每一行数据,但是它允许NULL值。一个表可以有多个唯一键。...``(空): 表示该列既不是主键,也不是唯一键。...,表示它是主键;email列的Key为UNI,表示它是唯一键;其他列的Key为""(空),表示它们既不是主键,也不是唯一键。

1.8K20
  • Python 高级笔记第二部分:数据库的概述和MySQL数据表操作

    SQL语言特点 SQL语言基本上独立于数据库本身 各种不同的数据库对SQL语言的支持与标准存在着细微的不同 每条命令以 ; 结尾 SQL命令(除了数据库名和表名)关键字和字符串可以不区分字母大小写...(UNI):字段值不允许重复,但可为 NULL,KEY标志为 UNI 主键索引(PRI):一个表中只能有一个主键字段, 主键字段不允许重复,且不能为NULL,KEY标志为PRI。...、UNI。...✨创建外键 [CONSTRAINT 外键名称] FOREIGN KEY 从表外键 REFERENCES 主表名(主表主键) -- 从表的外键字段数据类型与指定的主表主键应该相同。...✨解除外键约束 通过外键名称解除外键约束 alter table 表名 drop foreign key 外链名; drop index 索引名 on 表名 注意:删除外键后发现desc查看 MUL

    1.9K20

    【重学 MySQL】十四、显示表结构

    PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。 Default:表示该列是否有默认值,如果有,那么值是多少。...Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。...使用SHOW COLUMNS命令 SHOW COLUMNS命令与DESCRIBE命令非常相似,也用于显示表的列信息。...使用SHOW CREATE TABLE命令 虽然SHOW CREATE TABLE命令主要用于显示创建表的SQL语句,但它也间接地展示了表的结构,包括所有的列定义、索引、外键等。...SHOW CREATE TABLE 表名; 这个命令会返回创建该表的完整SQL语句,包括所有的列定义、索引、外键约束等。这对于理解表的完整结构或复制表结构到其他数据库非常有用。

    63710

    MySQL information_schema详解 COLUMNS

    这里显示用来继续其值的表达式,否则为空 接下来对上面的一些栏位做进一步的介绍 1.1 COLUMN_KEY 该列显示列是否被索引,其有如下可能值 空 代表没有被索引,或者是一个多列的非唯一的索引的次要列 PRI...代表是主键,或者是一个多列主键的其中一个栏位 UNI 代表是一个唯一索引的第一个列,一个唯一索引是可以有多个空值的 MUL 代表该列是一个非唯一索引的第一个列 如果一个栏位在多个索引中,COLUMN_KEY...只会显示其中优先级最高的一个,顺序为PRI, UNI, MUL 如果表中无主键,如果一个唯一索引不可以包含空值(定义非空),该列其可能会被显示为PRI 一个复合索引如果是唯一的,该列也有可能会被显示为MUL

    4.1K41

    听说Mysql你很豪横?-------------深入解析mysql数据库中的索引!

    数据库中的索引与书籍中的目录类似 在一本书中,无须阅读整本书,利用目录就可以快速査找所需信息 书中的目录是一个词语列表,其中注明了包含各个词的页码 数据库索引 在数据库中,索引使数据库程序无须对整个表进行扫描...主键key描述字段含义 PRI主键约束; UNI唯一约束; MUL可以重复。...什么是候选键? 主表中的外键是另一张表的主键。 候选键:除了主键以外的都是候选键。 要想能快速查找某一条你想要的数据,必须要要创建主键(一般在开始创建表的时候就会设置)。 ?...| Extra | +---------+-------------+------+-----+---------+-------+ | id | char(3) | NO | PRI...| NULL | | | name | char(10) | NO | MUL | NULL | | | score | int(3)

    99630

    MySQL数据库,从入门到精通:第三篇——MySQL 数据库规范和基础查询语句

    摘要 本文主要分为两个方面,第一部分介绍MySQL数据库规范及其背景知识,包括数据库命名规范、字段的命名规范、数据类型以及索引和键等内容,希望帮助读者遵循MySQL数据库规范,提高数据库的质量。...SQL(Structured Query Language,结构化查询语言)是使用关系模型的数据库应用语言, 与数据直接打交道 ,由 IBM上世纪70年代开发出来。...SQL语言的规则与规范 QL 可以写在一行或者多行。...PRI表示该列是表主键的一部分;UNI表示该列是 UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。 Default:表示该列是否有默认值,如果有,那么值是多少。...Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

    22410

    pandas与SQL的查询语句对比

    在pandas的官方文档中对常用的SQL查询语句与pandas的查询语句进行了对比,这里以 @猴子 社群里面的朝阳医院数据为例进行演示,顺便求第四关门票,整体数据结构如下: import pandas...SELECT 从中选择“商品名称”,“销售数量”两列 SQL: SELECT "商品名称","销售数量" FROM cyyy LIMIT 5 PANDAS: df[['商品名称','销售数量']].head...WHERE 从中筛选出销售数量为3件的销售记录 SQL: SELECT * FROM cyyy WHERE "销售数量" = 3 LIMIT 5 PANDAS: df[df['销售数量']==3].head...GROUP BY 在Pandas中可以使用groupby()函数实现类似于SQL中的GROUP BY功能,groupby()能将数据集按某一条件分为多个组,然后对其进行某种函数运算(通常是聚合运算)。...8 D厄贝沙坦氢氯噻嗪片(倍悦) 1 D替格瑞洛片 1 D盐酸贝尼地平片 3 dtype: int64 这里也可以使用count(),与size

    1.2K41

    mysql数据库概念和基本语法(一)

    Key 作为唯一的标识符,优点是查找速度快,在这方面明显优于关系型数据库,缺点是无法像关系型数据库一样使用条件过滤(比如 WHERE),如果你不知道去哪里找数据,就要遍历所有的键,这就会消耗大量的计算。...SQL(Structured Query Language,结构化查询语言)是使用关系模型的数据库应用语言, 与数据直接打交道 ,由 IBM 上世纪70年代开发出来。...SQL语言的规则与规范 SQL 可以写在一行或者多行。...PRI表示该列是表主键的一部分;UNI表示该列是UNIQUE索引的一部分;MUL表示在列中某个给定值允许出现多次。 Default:表示该列是否有默认值,如果有,那么值是多少。...Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等。

    23010
    领券