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是唯一的即可
分享到:
相关推荐
为了自动执行数据库同步任务,需要在`db2dbJob.xml`中设置定时任务: ```xml <name>jobName <job-class>com.inspur.db2db.Db2dbJob</job-class> <key>mapfile</key> <value>rms_wlan.xml ...
它还提供了事务支持,可以实现 ACID 属性,满足复杂的业务需求。 **7. C/C++ API** RocksDB 的 API 采用 C/C++ 实现,这使得它能够轻松地被其他 C/C++ 应用程序集成。API 包括对键值操作、批量操作、迭代器遍历等...
键用于唯一标识表中的记录,分为主键(Primary Key)、外键(Foreign Key)等。主键确保每条记录的唯一性,外键用于建立表之间的关联。 #### 四、使用DB2 SQL Reference 《DB2 SQL Reference》作为DB2的官方文档,...
当不再需要数据库时,可以使用`shutdown`命令关闭JavaDB服务器:`SHUTDOWN`(在`ij`工具中)或`java -jar $DERBY_HOME/lib/derbyrun.jar sysinfo --shutdown`(在命令行中)。 11. **备份与恢复**: JavaDB允许你...
- **字段**(Field):实体中某一属性的具体值。 - **记录**(Record):实体的所有属性值的集合。 #### 4. 文件与记录之间的关系 文件是存储数据的一种形式,记录则是文件中数据的基本单位。两者之间的关系主要体现在...
本文将深入探讨如何使用基于属性文件的读取类,以及`db.properties`文件在实际应用中的用途。 首先,让我们了解Java中的`java.util.Properties`类。这个类继承自`Hashtable`,实现了`Map`接口,因此它具有存储键值...
其中`constraints`可以包括`PRIMARY KEY`、`FOREIGN KEY`、`UNIQUE`等约束。 #### 1.2 使用临时表(Temporary Tables) 临时表在会话级别存在,主要用于存储临时数据。需要注意的是,DB2默认的临时表空间是`...
值得注意的是,MySQL还提供了`AUTO_INCREMENT`属性,允许字段自动递增,这是DB2所没有的功能。 #### 2. 主键生成方式 - **DB2**:在DB2中,可以通过`GENERATED BY DEFAULT AS IDENTITY`来指定一个字段自动生成主...
- 在“服务”窗口中,右键单击 "JavaDB" 数据库节点,选择“属性”。 - 输入 JavaDB 根目录 (javadb) 的路径。 - 设置数据库位置,可以使用创建的 Home 目录或者保留默认设置。 - 单击“确定”。 - **启动...
介绍 OrientDB 中使用的 SQL 查询语言,包括基本的 CRUD 操作和其他高级功能。 **1.9 关系 (Relationships)** 深入探讨 OrientDB 如何处理实体之间的关系,以及如何定义和管理这些关系。 **1.10 图工作 (Working ...
至于DB2自动生成流水号,可以利用`IDENTITY`属性或者`SEQUENCE`对象。`IDENTITY`常用于单表主键自增,如: ```sql CREATE TABLE YourTable ( Id INT GENERATED BY DEFAULT AS IDENTITY PRIMARY KEY, ... ); ``` `...
在建表语句中加入`NO OVERHEAD`属性,如: ```sql CREATE TABLE YOUR_TABLE (COL1 INT) ORGANIZE BY ROW WITH NO OVERHEAD; ``` **调整已存在的表:** 对于已有的表,可以通过ALTER TABLE命令添加该属性。 **查看...
通过以上分析,我们可以看到,在DB2中创建表不仅需要定义表结构,还需要明确各列的数据类型、是否允许为空等属性。此外,合理地定义主键对于保证数据的一致性和查询性能至关重要。希望本文能帮助读者更好地理解DB2中...
- **+62601529**:删除操作破坏了UNIQUE或PRIMARY KEY约束,可能是在数据完整性维护中忽略了一些规则。 - **+64501528**:尝试在不允许NULL的列中插入NULL值,可能是在数据插入或更新操作中违反了列定义规则。 - **+...
String url = "https://api.themoviedb.org/3/movie/" + movieId + "?api_key=" + apiKey; ``` 然后,发送请求并解析返回的JSON响应,可以使用Gson或Jackson这样的JSON库将JSON对象转换为Java对象。以下是一个简单...
DDL用于创建和定义数据库对象,如CREATE用于建立数据库、表等,DECLARE则用于在存储过程中创建临时表,DROP则用于删除这些对象,而ALTER用于修改已存在的数据库对象属性,但不包括索引。 在DDL的基本语法中,创建...