SQL 列举约束

SQL 列举非索引外键,你想列出模式中某个表的约束,以及与这些约束相关的列。例如,你希望找出 EMP 表的约束及相关的列。

SQL 列举约束 问题描述

你想列出模式中某个表的约束,以及与这些约束相关的列。例如,你希望找出 EMP 表的约束及相关的列。

SQL 列举约束 解决方案

DB2
查询 SYSCAT.TABCONSTSYSCAT.COLUMNS

1  select a.tabname, a.constname, b.colname, a.type
2    from syscat.tabconst a,
3         syscat.columns b
4   where a.tabname   = 'EMP'
5     and a.tabschema = 'SMEAGOL'
6     and a.tabname   = b.tabname
7     and a.tabschema = b.tabschema

Oracle
查询 SYS.ALL_CONSTRAINTSSYS.ALL_CONS_COLUMNS

 1  select a.table_name,
 2         a.constraint_name,
 3         b.column_name,
 4         a.constraint_type
 5    from all_constraints a,
 6         all_cons_columns b
 7   where a.table_name      = 'EMP'
 8     and a.owner           = 'SMEAGOL'
 9     and a.table_name      = b.table_name
10     and a.owner           = b.owner
11     and a.constraint_name = b.constraint_name

PostgreSQLMySQLSQL Server
查询 INFORMATION_SCHEMA.TABLE_CONSTRAINTSINFORMATION_SCHEMA.KEY_COLUMN_USAGE

 1  select a.table_name,
 2         a.constraint_name,
 3         b.column_name,
 4         a.constraint_type
 5    from information_schema.table_constraints a,
 6         information_schema.key_column_usage b
 7   where a.table_name      = 'EMP'
 8     and a.table_schem     = 'SMEAGOL'
 9     and a.table_name      = b.table_name
10     and a.table_schema    = b.table_schema
11     and a.constraint_name = b.constraint_name

SQL 列举约束 扩展知识

毋庸置疑,约束是关系数据库的重要组成部分,我们甚至不需要解释为什么要列出一个表的约束。出于多个原因,列出一个表的约束是非常有用的。你可能希望找出那些没有主键的表,也可能想知道有哪些列应该被设置为外键却没有这么做(例如,子表的数据不同于父表,你希望知道这是怎么发生的),或者你可能希望了解检查约束。(一些列可以为 Null 吗?它们必须满足某些条件吗?)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程