Oracle将用户创建的表、约束等信息都放在数据字典表中,允许开发人员查询数据字典表或视图来获取数据库对象的信息。
如下数据字典视图提供了约束的详细信息:
user_constraints:如果知道约束名,想知道约束类型,可以查询user_constraints,这个视图描述了约束的定义,但是它不描述约束定义在哪些字段名称上。
user_cons_columns:视图中显示约束的字段名称。如果主键是一个联合主键,这个视图中将有这个约束的两条记录,联合主键的每一个字段对应一条记录。每一条记录通过position(在联合主键中的位置)来区别。
例如:使用user_constraints查询t_claim表中的所有约束
SELECT constraint_name, search_condition, status
FROM user_constraints
WHERE table_name = UPPER ('t_claim');
查询结果:
image.png
例如:使用user_cons_columns查询t_claim表约束应用的列信息
SELECT constraint_name, column_name
FROM user_cons_columns
WHERE table_name = UPPER ('t_claim');
查询结果:
image.png
查询表的主键
select cu.* from user_cons_columns cu, user_constraints au
where cu.constraint_name = au.constraint_name
and au.constraint_type = 'P' AND cu.table_name = UPPER ('t_claim')
查询结果:
image.png
查找表的外键
select * from user_constraints c where c.constraint_type = 'R' and c.table_name = UPPER ('t_claim')
查询结果:
image.png
查询外键约束的列名:
select * from user_cons_columns cl where cl.constraint_name = 'PK_ACCIDENT'
查询结果:
image.png
查询表的所有列及其属性
select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where c.table_name = UPPER ('t_claim')
查询结果:
image.png
例如:使用all_constraints和all_cons_columns来获取t_claim表 约束的详细信息
SELECT a.table_name,
a.constraint_name,
a.search_condition,
b.column_name,
a.constraint_type
FROM all_constraints a, all_cons_columns b
WHERE a.table_name = UPPER ('t_claim')
AND a.table_name = b.table_name
AND a.owner = b.owner
AND a.constraint_name = b.constraint_name;
查询结果:
image.png