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:
mysql> desc 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是唯一的即可
分享到:
相关推荐
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下从...
COLUMNS 表提供了 MYSQL 数据库中所有字段的信息。这个表中包含了以下几个关键字段: * table_schema:存放表所属数据库名 * table_name:存放字段所属表名 * column_name:存放字段名 可以使用以下 SQL 语句来...
在其它类Unix系统中安装MySQL 2.8. 使用源码分发版安装MySQL 2.8.1. 源码安装概述 2.8.2. 典型配置选项 2.8.3. 从开发源码树安装 2.8.4. 处理MySQL编译问题 2.8.5. MIT-pthreads注意事项 ...
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下从...
12. **KEY_COLUMN_USAGE**:显示表中作为主键或外键的列的信息。 13. **ROUTINES**:提供存储过程和函数的元数据。 14. **VIEWS**:提供视图的定义信息。 15. **TRIGGERS**:提供触发器的详细信息。 #### 四、查询...
在MySQL 5.7中,你可以直接在数据库中存储和操作JSON对象,无需额外的复杂转换。 首先,让我们了解如何创建一个支持JSON字段的表。在MySQL中,你可以这样定义一个表: ```sql CREATE TABLE example_table ( id ...
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. 在...
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、创建数据库、建立表结构、查看表结构、插入记录和查询记录等。 创建数据库 在 MySQL 中,创建数据库是非常简单的。我们可以...
MySQL是世界上最流行的开源关系型数据库管理系统之一,广泛应用于各种规模的企业和项目中。《MySQL必知必会》是一本深入浅出的MySQL教程,旨在帮助读者掌握MySQL的基础知识和高级特性。书中通过丰富的实例和练习,使...
### 常见MySQL命令总结 #### 数据库备份与恢复 **导出整个数据库** ...- **示例**: `mysqldump -u wcnc -p ...以上命令涵盖了MySQL中最常用的数据库和表的操作。通过这些命令,可以方便地管理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下从...
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下从...
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_...
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 提供了 `spark-hbase-connector` 库,允许我们方便地连接到 ...
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下从...
在`SHOW INDEX`中,`Non_unique`表示索引是否唯一,`Key_name`是索引的名称,`Seq_in_index`是索引中的列位置,`Column_name`是索引的列名,`Cardinality`是索引中不同值的数量,而`Collation`和`Sub_part`分别描述...
`列出当前数据库中的所有表,`SHOW COLUMNS FROM table_name;`显示特定表的列信息。 7. **创建数据库**:使用`CREATE DATABASE`命令创建新的数据库,如`CREATE DATABASE MYSQLDATA;`创建名为MYSQLDATA的新数据库。 ...