我在我的数据库中创建了一个表并添加了一些约束。当我在表格中使用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
关键字显示该列已设置为主键。
答案 0 :(得分:2)
DESC t
或DESCRIBE t
相当于SHOW COLUMNS FROM t
。在SHOW COLUMNS
命令的输出中,如果唯一索引不能包含空值并且表中没有主键,则它可能会显示为PRI
。
在您的情况下,sif4
列符合条件,因为它被声明为
sif4 INT NOT NULL UNIQUE
如果UNIQUE索引不能包含NULL,则它可能会显示为PRI 值,表中没有PRIMARY KEY。一个独特的索引可能 如果多列形成复合UNIQUE索引,则显示为MUL; 虽然列的组合是唯一的,但每列都可以 仍然保持给定值的多次出现。