• 12. KEY_COLUMN_USAGE


    12. KEY_COLUMN_USAGE

    KEY_COLUMN_USAGE表描述哪些键列具有约束。

    KEY_COLUMN_USAGE表有以下列:

    • CONSTRAINT_CATALOG :约束所属目录的名称。 该值始终为def。
    • CONSTRAINT_SCHEMA :约束所属schema(database)名称
    • CONSTRAINT_NAME :约束名称
    • TABLE_CATALOG :表所属目录的名称。 该值始终为def。
    • TABLE_SCHEMA :表所属schema(database)名称
    • TABLE_NAME :具有约束的表的名称
    • COLUMN_NAME :具有约束的列的名称。
      如果约束是外键,则这是外键的列,而不是外键引用的列。
    • ORDINAL_POSITION :列在约束内的位置,而不是列在表中的位置。列位置从1开始编号。
    • POSITION_IN_UNIQUE_CONSTRAINT:NULL对于唯一和主键约束。对于外键约束,此列是正在引用的表的键中的序号位置。
    • REFERENCED_TABLE_SCHEMA :约束引用的schema(数据库)的名称。
    • REFERENCED_TABLE_NAME :约束引用的表的名称。
    • REFERENCED_COLUMN_NAME :约束引用的列的名称。

    假设有两个表名t1, t3并且具有以下定义:

    
    CREATE TABLE t1
    (
        s1 INT,
        s2 INT,
        s3 INT,
        PRIMARY KEY(s3)
    ) ENGINE=InnoDB;
    
    CREATE TABLE t3
    (
        s1 INT,
        s2 INT,
        s3 INT,
        KEY(s1),
        CONSTRAINT CO FOREIGN KEY (s2) REFERENCES t1(s3)
    ) ENGINE=InnoDB;

    对于以上两张表, KEY_COLUMN_USAGE表有以下记录:

    mysql> select * from information_schema.KEY_COLUMN_USAGE where CONSTRAINT_SCHEMA='test';
    +--------------------+-------------------+-----------------+---------------+--------------+------------+-------------+------------------+-------------------------------+-------------------------+-----------------------+------------------------+
    | CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_CATALOG | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | ORDINAL_POSITION | POSITION_IN_UNIQUE_CONSTRAINT | REFERENCED_TABLE_SCHEMA | REFERENCED_TABLE_NAME | REFERENCED_COLUMN_NAME |
    +--------------------+-------------------+-----------------+---------------+--------------+------------+-------------+------------------+-------------------------------+-------------------------+-----------------------+------------------------+
    | def                | test              | PRIMARY         | def           | test         | t1         | s3          |                1 |                          NULL | NULL                    | NULL                  | NULL                   |
    | def                | test              | CO              | def           | test         | t3         | s2          |                1 |                             1 | test                    | t1                    | s3                     |
    +--------------------+-------------------+-----------------+---------------+--------------+------------+-------------+------------------+-------------------------------+-------------------------+-----------------------+------------------------+
    2 rows in set (0.02 sec)
    

    也可以这样查询表上的约束

    mysql> SELECT table_name, 
           referenced_table_schema,referenced_table_name,
           CONSTRAINT_NAME,
           GROUP_CONCAT(column_name ORDER BY ORDINAL_POSITION) AS 'Columns'
           FROM information_schema.KEY_COLUMN_USAGE
           WHERE constraint_schema = 'test'
           AND REFERENCED_TABLE_NAME is not null
           group by table_name, 
           referenced_table_schema,referenced_table_name,
           CONSTRAINT_NAME
           ORDER BY TABLE_NAME;
    +------------+-------------------------+-----------------------+-----------------+---------+
    | table_name | referenced_table_schema | referenced_table_name | CONSTRAINT_NAME | Columns |
    +------------+-------------------------+-----------------------+-----------------+---------+
    | t3         | test                    | t1                    | CO              | s2      |
    +------------+-------------------------+-----------------------+-----------------+---------+
    1 row in set (0.01 sec)
  • 相关阅读:
    远程监控基础知识和故障排除
    感慨颇多
    物联网操作系统Hello China移植mile stone之一:移植基础版本V1.76发布
    iOS5系统API和5个开源库的JSON解析速度测试
    (译)iPhone: 用公开API创建带小数点的数字键盘 (OS 3.0, OS 4.0)
    [工具]Mac平台开发几个网络抓包工具(sniffer)
    [工具]Mac下非常好用的快捷终端Dterm
    【IOS】在SDK中打开其他接入应用的解决方案
    [开源]在iOS上实现Android风格的控件Toast
    [技巧]使用Xcode集成的HeaderDoc自动生成注释和开发文档
  • 原文地址:https://www.cnblogs.com/wanbin/p/9514638.html
Copyright © 2020-2023  润新知