【问题标题】:DESC command and key column within itDESC 命令和其中的键列
【发布时间】:2014-08-26 22:47:47
【问题描述】:

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

这是表定义:

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

这是DESC 结果:

mysql> desc t; +-------+---------+------+------+---------+-------+ |领域 |类型 |空 |钥匙 |默认 |额外 | +-------+---------+------+------+---------+-------+ | sif |整数(11) |是 | |空 | | | sif2 |整数(11) |否 | |空 | | | sif3 |整数(11) |是 |统一 |空 | | | sif4 |整数(11) |否 |优先级 |空 | | +-------+---------+------+------+---------+-------+ 一组 4 行(0.01 秒)

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

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

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

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

    sif4 INT NOT NULL UNIQUE
    

    来自documentation

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

    【讨论】:

      猜你喜欢
      • 2011-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-29
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多