【oracle操作札记】oracle通过sql语句查看表的约束

因为想通过sql语句来查看数据库表的相关约束信息,通过看了网上的一些资料,觉得有必要一下笔记。

Oracle将用户创建的表、约束等信息都放在数据字典表中,允许开发人员查询数据字典表或视图来获取数据库对象的信息,比如一个表的创建者信息、创建时间信息、所属表空间信息、用户访问权限信息等。如果用户在对数据库中的数据进行操作时遇到困难,就可以访问数据字典来查看数据库对象的详细信息,数据字典中包含的主要内容如下所示。

各种方案对象的定义信息,如表、视图、索引、同义词、存储过程、函数、包、触发器和各种对象。

存储空间的分配信息,如为某个对象分配了多少存储空间,该对象使用了多少存储空间。

安全信息,如账户、权限、角色、完整性约束信息。

数据库实例运行时的性能和统计信息。

其他数据库运行过程中的基本信息。

注意:数字字典表本身不能被直接访问,必须通过数据字典视图来访问数据字典中的信息,系统的数据字典视图以V$开头。

数据字典表根据其前缀又可分为如下4类。

user:用户所创建对象对应的数据字典表,例如user_objects、user_tables等。

all:用户所能访问对象(包括用户创建的对象)对应的数据字典表,例如all_objects、all_tables等。

dba:所有对象对应的数据字典表,例如all_objects、all_tables等。

v$:描述系统性能相关的数据字典表。如通过v$version表可获得数据库版本信息。

有两个数据字典视图提供了约束的详细信息。

user_constraints:对于表中的每一个约束,在该表中都有一条记录描述这个约束,该表包含约束应用到的表,如果知道约束名,想知道约束类型,可以查询user_constraints,这个视图描述了约束的定义,但是它不提供约束定义在哪些字段名称上。

user_cons_columns:视图中显示约束的字段名称。如果主键是一个联合(多字段)主键,这个视图中将有这个约束的两条记录,联合主键的每一个字段对应一条记录,每一条记录通过position(在联合主键中的位置)来区别。

例如要查询invoice_check_others表中的所有约束信息,可以使用如下的SQL语句:

SELECT constraint_name, search_condition, status 
  FROM user_constraints 
 WHERE table_name = UPPER (‘cityandcode‘);

【oracle操作札记】oracle通过sql语句查看表的约束

可见在user_constraints 表上有很多的数据库原信息

下面可以查看user_constraints 表中具体有哪些信息

select * from user_constraints

【oracle操作札记】oracle通过sql语句查看表的约束

在user_constraints视图中并没有包含约束应用到的列信息,为了获取invoice_check_单位others表的列约束信息,可以使用如下的代码查询user_cons_columns视图,如以下代码所示。

--查询约束应用的列信息  
SELECT constraint_name, column_name 
  FROM user_cons_columns 
 WHERE table_name = UPPER (‘cityandcode‘);

【oracle操作札记】oracle通过sql语句查看表的约束


其他的作为DBA,可以使用all_constraints和all_cons_columns来获取约束的详细信息。

先到这里



本文出自 “菜鸟也想飞” 博客,请务必保留此出处http://yangyingbin.blog.51cto.com/6660933/1370830

【oracle操作札记】oracle通过sql语句查看表的约束,布布扣,bubuko.com

【oracle操作札记】oracle通过sql语句查看表的约束

上一篇:教你用Fireworks如何设计优秀的APP图标


下一篇:MySQL5.6 更改字段属性仍旧会锁全表,注意这个坑!