DESC命令和其中的键列

时间:2014-07-06 08:05:59

标签: mysql sql

我在我的数据库中创建了一个表并添加了一些约束。当我在表格中使用DESC关键字时,根据我放置的约束,Key列会更改其记录。

以下是表格定义:

CREATE TABLE t(
 sif  INT,
 sif2 INT NOT NULL,
 sif3 INT          UNIQUE,
 sif4 INT NOT NULL UNIQUE
);

以下是DESC结果:


    mysql> desc t;
    +-------+---------+------+-----+---------+-------+
    | Field | Type    | Null | Key | Default | Extra |
    +-------+---------+------+-----+---------+-------+
    | sif   | int(11) | YES  |     | NULL    |       |
    | sif2  | int(11) | NO   |     | NULL    |       |
    | sif3  | int(11) | YES  | UNI | NULL    |       |
    | sif4  | int(11) | NO   | PRI | NULL    |       |
    +-------+---------+------+-----+---------+-------+
    4 rows in set (0.01 sec)

为什么我的列sif4获得键值PRI?我从未提及主键定义,但DESC关键字显示该列已设置为主键。

1 个答案:

答案 0 :(得分:2)

DESC tDESCRIBE t相当于SHOW COLUMNS FROM t。在SHOW COLUMNS命令的输出中,如果唯一索引不能包含空值并且表中没有主键,则它可能会显示为PRI

在您的情况下,sif4列符合条件,因为它被声明为

sif4 INT NOT NULL UNIQUE

来自documentation

  

如果UNIQUE索引不能包含NULL,则它可能会显示为PRI   值,表中没有PRIMARY KEY。一个独特的索引可能   如果多列形成复合UNIQUE索引,则显示为MUL;   虽然列的组合是唯一的,但每列都可以   仍然保持给定值的多次出现。