0
点赞
收藏
分享

微信扫一扫

数据库元数据数据字典查询_9_列出给定表的所有约束


                           列出给定表的所有约束

需求描述

需求:查询出给定的表emp的相关的约束信息。

解决方法:通过各个数据库里提供的与约束相关的数据字典进行查询。

注: 数据库数据集SQL脚本详见如下链接地址

​​员工表结构和数据初始化SQL脚本​​

SQL代码

-- Sql Server:
SELECT B.name AS Constraint_Name,
B.type,
CASE B.type WHEN 'PK' THEN '主键'
WHEN 'F' THEN '外键'
WHEN 'D' THEN '默认值约束'
WHEN 'C' THEN '检查约束' END AS ConstaintType_Desc,
CASE B.type WHEN 'PK' THEN G.COLUMN_NAME
WHEN 'F' THEN G.COLUMN_NAME
WHEN 'D' THEN E.name
WHEN 'C' THEN F.name END AS Column_name,
CASE B.type WHEN 'PK' THEN NULL
WHEN 'F' THEN NULL
WHEN 'D' THEN C.definition
WHEN 'C' THEN D.definition END AS Define,
B.create_date AS Create_Time,
B.modify_date AS Modify_Time
FROM sys.all_objects A
JOIN sys.all_objects B
ON A.object_id = B.parent_object_id
JOIN sys.default_constraints C
ON B.parent_object_id = B.parent_object_id
JOIN sys.check_constraints D
ON B.parent_object_id = D.parent_object_id
JOIN sys.all_columns E
ON E.object_id = C.parent_object_id
AND C.parent_column_id = E.column_id
JOIN sys.all_columns F
ON F.object_id = D.parent_object_id
AND D.parent_column_id = F.column_id
LEFT JOIN information_schema.key_column_usage G
ON B.name = G.CONSTRAINT_NAME
WHERE A.NAME = 'EMP'

执行结果

数据库元数据数据字典查询_9_列出给定表的所有约束_数据库

注:

1 数据库对象类型这列为自己添加的备注。

2 sys.all_objects里的type的枚举类型有如下:

数据库元数据数据字典查询_9_列出给定表的所有约束_sql_02

-- Mysql:
-- 注意mysql内并无同一视图可以满足上述需求。

-- Oracle:
SELECT A.CONSTRAINT_NAME,A.TABLE_NAME,A.COLUMN_NAME,B.CONSTRAINT_TYPE
FROM USER_CONS_COLUMNS A, USER_CONSTRAINTS B
WHERE A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
AND A.TABLE_NAME = 'EMP'

 

举报

相关推荐

如何列出所有数据库?

0 条评论