Oracle的数据字典
以前用数据库几乎没有数据字典这个概念,但是在Oracle中,这是一个非常重要的概念,它包含了
- 数据库中所有方案对象(schema object)的定义(包括表,视图,索引,簇,同义词,序列,过程,函数,包,触发器等等)
- 数据库为一个方案对象分配了多少空间,以及该对象当前使用了多少空间
- 列的默认值
- 完整性约束(integrity constraint)信息
- 数据库用户名
- 每个用户被授予(grant)的权限(privilege)与角色(role)
- 监控(audit)信息,例如哪个用户对某个方案对象进行了访问或更新操作
- 数据库中的其他概要信息
可以这么说,Oracle的数据字典,相当与XML的Schema,Schema定义了XML的具体结构,数据字典定义了数据库里面的各种结构,比如有哪些表,表的约束有哪些,等等。
现在,如果我想查看我用了哪些约束,思路应该是,约束–constrai…
于是我查 select * from dictionary where table_name like ‘%CONSTR%’; 注意,这里的dictionary就是数据字典,里面包含了大量定义数据库的表格,结果为:
TABLE_NAME COMMENTS ——————————————————————————–
USER_CONSTRAINTS Constraint definitions on user’s own tables
ALL_CONSTRAINTS Constraint definitions on accessible tables
于是我知道,USER_CONSTRAINTS里面含有我所登陆的用户的约束信息
继续查: select * from USER_CONSTRAINTS;
出来的结果就是一些主键、是否为空、外键等等信息了。
值得注意的是USER_CONSTRAINTS其实是SYS内建的视图,权限是大家都可以访问,想看USER_CONSTRAINTS是如何定义的吗?呵呵,还是用刚才的思路,查:select * from dictionary where table_name like ‘%VIEWS%’; 可以找到
USER_VIEWS Description of the user’s own views
ALL_VIEWS Description of views accessible to the user
ALL_MVIEWS All materialized views in the database
USER_MVIEWS All materialized views in the database
ALL_BASE_TABLE_MVIEWS All materialized views with log(s) in the database that the user can see
USER_BASE_TABLE_MVIEWS All materialized views with log(s) owned by the user in the database
ALL_REGISTERED_MVIEWS Remote materialized views of local tables that the user can see
USER_REGISTERED_MVIEWS Remote materialized views of local tables currently using logs owned by the user
ALL_XML_VIEWS Description of the all XMLType views that the user has privileges on
USER_XML_VIEWS Description of the user’s own XMLType views
这里当然是用ALL_VIEWS ,继续看看ALL_VIEWS 的结构,desc ALL_VIEWS ;
Name Type Nullable Default Comments
—————- ————– ——– ——- ———————————————————–
OWNER VARCHAR2(30) Owner of the view
VIEW_NAME VARCHAR2(30) Name of the view
TEXT_LENGTH NUMBER Y Length of the view text
TEXT LONG Y View text
TYPE_TEXT_LENGTH NUMBER Y Length of the type clause of the object view
TYPE_TEXT VARCHAR2(4000) Y Type clause of the object view
OID_TEXT_LENGTH NUMBER Y Length of the WITH OBJECT OID clause of the object view
OID_TEXT VARCHAR2(4000) Y WITH OBJECT OID clause of the object view
VIEW_TYPE_OWNER VARCHAR2(30) Y Owner of the type of the view if the view is an object view
VIEW_TYPE VARCHAR2(30) Y Type of the view if the view is an object view
SUPERVIEW_NAME VARCHAR2(30) Y Name of the superview, if view is a subview
好了,接着输出TEXT就可以看到了