【问题标题】:How do I show unique constraints of a table in MySQL?如何在 MySQL 中显示表的唯一约束?
【发布时间】:2020-02-08 13:34:13
【问题描述】:

我创造了它们,但我忘记了它们是什么。

我只是想

  1. 给他们看。
  2. 删除表上的所有约束。

【问题讨论】:

    标签: mysql database


    【解决方案1】:
    select distinct CONSTRAINT_NAME
    from information_schema.TABLE_CONSTRAINTS
    where table_name = 'table_name' and constraint_type = 'UNIQUE';
    

    【讨论】:

      【解决方案2】:

      这不会产生优雅的输出,但很容易记住:

      SHOW CREATE TABLE table_name;
      

      【讨论】:

        【解决方案3】:
        select distinct CONSTRAINT_NAME
        from information_schema.TABLE_CONSTRAINTS
        where CONSTRAINT_SCHEMA = 'mysql'
        

        【讨论】:

          【解决方案4】:

          此查询返回主键、唯一键和外键:

          show indexes from table_name;
          

          【讨论】:

            【解决方案5】:

            OP 要求提供一个表,这样就可以了。

            此外,删除最后一个 where 子句将显示受唯一约束保护的数据库的所有列:

            SELECT
              CONSTRAINT_NAME,
              TABLE_NAME,
              COLUMN_NAME
            FROM information_schema.KEY_COLUMN_USAGE
            WHERE
              CONSTRAINT_NAME LIKE 'UNIQ%'
              AND TABLE_SCHEMA = 'your_database_name'
              AND TABLE_NAME = 'your_table_name';
            

            不幸的是,mysql 不便于根据查询结果删除索引。您可以执行以下查询的输出以删除 2 个查询中的所有唯一列:

            SELECT CONCAT(
              'ALTER TABLE ',
              TABLE_NAME,
              ' DROP INDEX ',
              CONSTRAINT_NAME,
              '; -- drops ',
              COLUMN_NAME,
              ' constraint'
            )
            FROM information_schema.KEY_COLUMN_USAGE
            WHERE
              CONSTRAINT_NAME LIKE 'UNIQ%'
              AND TABLE_SCHEMA = 'your_database_name';
            

            【讨论】:

            • 连接后如何执行这个查询?
            猜你喜欢
            • 1970-01-01
            • 2010-11-16
            • 2021-08-03
            • 2023-03-22
            • 2012-05-11
            • 2021-01-22
            • 2017-01-10
            • 1970-01-01
            相关资源
            最近更新 更多