`
wayfarer
  • 浏览: 297720 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

DB中的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:
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是唯一的即可

分享到:
评论

相关推荐

    db2db配置详细说明

    为了自动执行数据库同步任务,需要在`db2dbJob.xml`中设置定时任务: ```xml <name>jobName <job-class>com.inspur.db2db.Db2dbJob</job-class> <key>mapfile</key> <value>rms_wlan.xml ...

    key-value 存储系统 RocksDB.zip

    它还提供了事务支持,可以实现 ACID 属性,满足复杂的业务需求。 **7. C/C++ API** RocksDB 的 API 采用 C/C++ 实现,这使得它能够轻松地被其他 C/C++ 应用程序集成。API 包括对键值操作、批量操作、迭代器遍历等...

    DB2 SQL-Reference

    键用于唯一标识表中的记录,分为主键(Primary Key)、外键(Foreign Key)等。主键确保每条记录的唯一性,外键用于建立表之间的关联。 #### 四、使用DB2 SQL Reference 《DB2 SQL Reference》作为DB2的官方文档,...

    安装javaDB

    当不再需要数据库时,可以使用`shutdown`命令关闭JavaDB服务器:`SHUTDOWN`(在`ij`工具中)或`java -jar $DERBY_HOME/lib/derbyrun.jar sysinfo --shutdown`(在命令行中)。 11. **备份与恢复**: JavaDB允许你...

    db2数据库面试问题

    - **字段**(Field):实体中某一属性的具体值。 - **记录**(Record):实体的所有属性值的集合。 #### 4. 文件与记录之间的关系 文件是存储数据的一种形式,记录则是文件中数据的基本单位。两者之间的关系主要体现在...

    基于属性文件的读取类

    本文将深入探讨如何使用基于属性文件的读取类,以及`db.properties`文件在实际应用中的用途。 首先,让我们了解Java中的`java.util.Properties`类。这个类继承自`Hashtable`,实现了`Map`接口,因此它具有存储键值...

    编程(db2)使用技巧

    其中`constraints`可以包括`PRIMARY KEY`、`FOREIGN KEY`、`UNIQUE`等约束。 #### 1.2 使用临时表(Temporary Tables) 临时表在会话级别存在,主要用于存储临时数据。需要注意的是,DB2默认的临时表空间是`...

    MySQL和DB2建表SQL差异

    值得注意的是,MySQL还提供了`AUTO_INCREMENT`属性,允许字段自动递增,这是DB2所没有的功能。 #### 2. 主键生成方式 - **DB2**:在DB2中,可以通过`GENERATED BY DEFAULT AS IDENTITY`来指定一个字段自动生成主...

    使用 Java DB (Derby) 数据库

    - 在“服务”窗口中,右键单击 "JavaDB" 数据库节点,选择“属性”。 - 输入 JavaDB 根目录 (javadb) 的路径。 - 设置数据库位置,可以使用创建的 Home 目录或者保留默认设置。 - 单击“确定”。 - **启动...

    orientdb手册

    介绍 OrientDB 中使用的 SQL 查询语言,包括基本的 CRUD 操作和其他高级功能。 **1.9 关系 (Relationships)** 深入探讨 OrientDB 如何处理实体之间的关系,以及如何定义和管理这些关系。 **1.10 图工作 (Working ...

    sql server 2000 分页存储过程,DB2分页存储过程,db2自动生成流水号存储过程

    至于DB2自动生成流水号,可以利用`IDENTITY`属性或者`SEQUENCE`对象。`IDENTITY`常用于单表主键自增,如: ```sql CREATE TABLE YourTable ( Id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, ... ); ``` `...

    DB2性能安全文件

    在建表语句中加入`NO OVERHEAD`属性,如: ```sql CREATE TABLE YOUR_TABLE (COL1 INT) ORGANIZE BY ROW WITH NO OVERHEAD; ``` **调整已存在的表:** 对于已有的表,可以通过ALTER TABLE命令添加该属性。 **查看...

    db2-database-design

    通过以上分析,我们可以看到,在DB2中创建表不仅需要定义表结构,还需要明确各列的数据类型、是否允许为空等属性。此外,合理地定义主键对于保证数据的一致性和查询性能至关重要。希望本文能帮助读者更好地理解DB2中...

    DB2异常SQLCODE信息

    - **+62601529**:删除操作破坏了UNIQUE或PRIMARY KEY约束,可能是在数据完整性维护中忽略了一些规则。 - **+64501528**:尝试在不允许NULL的列中插入NULL值,可能是在数据插入或更新操作中违反了列定义规则。 - **+...

    themoviedb:电影数据库

    String url = "https://api.themoviedb.org/3/movie/" + movieId + "?api_key=" + apiKey; ``` 然后,发送请求并解析返回的JSON响应,可以使用Gson或Jackson这样的JSON库将JSON对象转换为Java对象。以下是一个简单...

    DB2开发培训

    DDL用于创建和定义数据库对象,如CREATE用于建立数据库、表等,DECLARE则用于在存储过程中创建临时表,DROP则用于删除这些对象,而ALTER用于修改已存在的数据库对象属性,但不包括索引。 在DDL的基本语法中,创建...

Global site tag (gtag.js) - Google Analytics