`
hlbng
  • 浏览: 176598 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

MySQL中columns key的意思

阅读更多

http://dev.mysql.com/doc/refman/5.1/en/show-columns.html

The Key field indicates whether the column is indexed:
If Key is empty, the column either is not indexed or is indexed only as a secondary column in a multiple-column, non-unique index.
If Key is PRI, the column is a PRIMARY KEY or is one of the columns in a multiple-column PRIMARY KEY.
If Key is UNI, the column is the first column of a unique-valued index that cannot contain NULL values.
If Key is MUL, multiple occurrences of a given value are allowed within the column.

The column is the first column of a non-unique index
or a unique-valued index that can contain NULL values.
If more than one of the Key values applies to a given column of a table,
Key displays the one with the highest priority, in the order PRI, UNI, MUL.

A UNIQUE index may be displayed as PRI if it cannot contain NULL values and there is no PRIMARY KEY in the table.

A UNIQUE index may display as MUL if several columns form a composite UNIQUE index;
although the combination of the columns is unique, each column can still hold multiple occurrences of a given value.

当我们在desc 表名;的时候,有一个Key值,表示该列是否含有索引
假设表结构如下所示

PHP code:
mysqldesc aa; +-------+---------+------+-----+---------+-------+ | Field Type    Null Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | id    int(11) | YES  |     | NULL    |       | +-------+---------+------+-----+---------+-------+ | xx    int(11) | YES  PRI NULL    |       | +-------+---------+------+-----+---------+-------+ | yy    int(11) | YES  UNI NULL    |       | +-------+---------+------+-----+---------+-------+ | zz    int(11) | YES  MUL NULL    |       | +-------+---------+------+-----+---------+-------+ 1 row in set (0.00 sec)

我们看到Key那一栏,可能会有4种值,即'啥也没有','PRI','UNI','MUL'
1. 如果Key是空的, 那么该列值的可以重复, 表示该列没有索引, 或者是一个非唯一的复合索引的非前导列
2. 如果Key是PRI,  那么该列是主键的组成部分
3. 如果Key是UNI,  那么该列是一个唯一值索引的第一列(前导列),并别不能含有空值(NULL)
4. 如果Key是MUL,  那么该列的值可以重复, 该列是一个非唯一索引的前导列(第一列)或者是一个唯一性索引的组成部分但是可以含有空值NULL

如果对于一个列的定义,同时满足上述4种情况的多种,比如一个列既是PRI,又是UNI
那么"desc 表名"的时候,显示的Key值按照优先级来显示 PRI->UNI->MUL
那么此时,显示PRI

一个唯一性索引列可以显示为PRI,并且该列不能含有空值,同时该表没有主键

一个唯一性索引列可以显示为MUL, 如果多列构成了一个唯一性复合索引
因为虽然索引的多列组合是唯一的,比如ID+NAME是唯一的,但是没一个单独的列依然可以有重复的值
只要ID+NAME是唯一的即可

分享到:
评论

相关推荐

    MySQL 5.1中文手冊

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

    MYSQL-系统表

    COLUMNS 表提供了 MYSQL 数据库中所有字段的信息。这个表中包含了以下几个关键字段: * table_schema:存放表所属数据库名 * table_name:存放字段所属表名 * column_name:存放字段名 可以使用以下 SQL 语句来...

    mysql5.1中文手册

    在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 ...

    MySQL 5.1官方简体中文参考手册

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

    mysql5.7支持json数据的增删改查的例子

    在MySQL 5.7中,你可以直接在数据库中存储和操作JSON对象,无需额外的复杂转换。 首先,让我们了解如何创建一个支持JSON字段的表。在MySQL中,你可以这样定义一个表: ```sql CREATE TABLE example_table ( id ...

    MYSQL中文手册

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在...

    MySQL命令 MySQL命令

    - 例如:`Create table employeetable(id int(3) not null primary key, name char(10) not null, year date, salary int(3))` 创建名为employeetable的表,其中包含id、name、year和salary等字段。 - **删除表**...

    MySQL 5.1参考手册中文版

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在...

    国开电大MySQL数据库应用实验1

    在本实验中,我们将学习在 MySQL 中创建数据库和表的基本操作。实验步骤包括登录 MySQL、创建数据库、建立表结构、查看表结构、插入记录和查询记录等。 创建数据库 在 MySQL 中,创建数据库是非常简单的。我们可以...

    mysql_scripts MySQL必知必会脚本

    MySQL是世界上最流行的开源关系型数据库管理系统之一,广泛应用于各种规模的企业和项目中。《MySQL必知必会》是一本深入浅出的MySQL教程,旨在帮助读者掌握MySQL的基础知识和高级特性。书中通过丰富的实例和练习,使...

    常见mysql命令总结

    ### 常见MySQL命令总结 #### 数据库备份与恢复 **导出整个数据库** ...- **示例**: `mysqldump -u wcnc -p ...以上命令涵盖了MySQL中最常用的数据库和表的操作。通过这些命令,可以方便地管理MySQL数据库和表的数据。

    MySQL 5.1参考手册

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

    mysql官方中文参考手册

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

    MySQL and JSON A Practical Programming Guide 2018

    Searching for a Key Searching for a Path Searching for a Value 5 Changing Data Using Arrays Appending Arrays Inserting into an Array Using TRUNCATE Before Adding New Data Using JSON_INSERT Using JSON_...

    MySQL 5.1参考手册 (中文版)

    2.7. 在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 2.8.6. 在Windows下从...

    spark读取hbase数据,并使用spark sql保存到mysql

    本示例将详细介绍如何使用 Spark 从 HBase 中读取数据,并通过 Spark SQL 将其存储到 MySQL 数据库中。 首先,让我们了解 Spark 与 HBase 的交互。Spark 提供了 `spark-hbase-connector` 库,允许我们方便地连接到 ...

    MySQL中show命令方法得到表列及整个库的详细信息(精品珍藏)

    在`SHOW INDEX`中,`Non_unique`表示索引是否唯一,`Key_name`是索引的名称,`Seq_in_index`是索引中的列位置,`Column_name`是索引的列名,`Cardinality`是索引中不同值的数量,而`Collation`和`Sub_part`分别描述...

    操作mysql数据库的常用命令总结

    `列出当前数据库中的所有表,`SHOW COLUMNS FROM table_name;`显示特定表的列信息。 7. **创建数据库**:使用`CREATE DATABASE`命令创建新的数据库,如`CREATE DATABASE MYSQLDATA;`创建名为MYSQLDATA的新数据库。 ...

    mysql面试题20道精选

    主键是用于唯一标识表中每一行的一列或多列,通常定义为`PRIMARY KEY`约束,确保其值在整个表中唯一且非空。 8. **MySQL中的外键是什么?** 外键是一列数据,引用另一个表的主键,用于建立两个表之间的关联,确保...

Global site tag (gtag.js) - Google Analytics