Oracle中的数据字典详解数据库

数据字典
数据字典是oracle存放有关数据库信息的地方,几乎所有的系统信息和对象信息都可在数据字典中进行查询。数据字典是oracle数据库系统的信息核心,它是一组提供有关数据库信息的表和视图的集合,这些表和视图是只读的。它是随着数据库的建立而建立的,当数据库执行特定动作时数据字典也会自动更新。数据一览与数据字典来记录、校验和管理正在进行的操作。
oracle中、sys用户是数据字典的拥有者,数据字典保证在所有数据库的系统表空间system内,任何用户都无权更改sys模式下的模式对象或数据字典中的行。也就是说数据字典只能查询,不能手动进行修改。

包括:
基本表:描述数据库信息,只 能由数据库服务器进行修改
用户表:用户自定义表

数据字典命名规则

前缀 说明
USER 用户自己的
ALL 用户可以访问的
DBA 管理员视图
V$ 性能相关的数据

如何使用数据字典视图
从DICTIONARY开始,这个数据对象包含了数据字典的表名和说明

DESCRIBE DICTIONARY 
 
SELECT * 
FROM   dictionary 
WHERE  table_name = 'USER_OBJECTS'; 

USER_OBJECTS 和ALL_OBJECTS
USER_OBJECTS:
通过查询USER_OBJECTS可以确定当前用户所有创建的对象
可以获得如下信息:
Date created
Date of last modification
Status (valid or invalid)

SELECT object_name, object_type, created, status 
FROM   user_objects 
ORDER BY object_type; 

ALL_OBJECTS:
可以通过查询ALL_OBJECTS来确定当前用户能访问的数据对象

表的信息

DESCRIBE user_tables 
 
SELECT table_name 
FROM   user_tables; 

列的信息

DESCRIBE user_tab_columns 
 
SELECT column_name, data_type, data_length, 
       data_precision, data_scale, nullable 
FROM   user_tab_columns 
WHERE  table_name = 'EMPLOYEES';  

约束
USER_CONSTRAINTS:当前用户表上的约束
USER_CONS_COLUMNS 当前用户创建的列约束

DESCRIBE user_constraints 
 
SELECT constraint_name, constraint_type, 
       search_condition, r_constraint_name,  
       delete_rule, status 
FROM   user_constraints 
WHERE  table_name = 'EMPLOYEES';  
 
 
DESCRIBE user_cons_columns 
 
SELECT constraint_name, column_name 
FROM   user_cons_columns 
WHERE  table_name = 'EMPLOYEES';  

视图

DESCRIBE user_views 
 
SELECT DISTINCT view_name FROM user_views; 
 
SELECT text FROM user_views  
WHERE view_name = 'EMP_DETAILS_VIEW'; 

序列

DESCRIBE user_sequences

通过USER_SEQUENCES查询序列信息

SELECT  sequence_name, min_value, max_value,  
    increment_by, last_number 
FROM    user_sequences; 

LAST_NUMBER表示当没有使用NOCAHCE时,下一个可用的值

同义词

DESCRIBE user_synonyms 
 
SELECT *  
FROM   user_synonyms; 

给表添加注释
使用COMMENT语句给表或者列,添加注释:

COMMENT ON TABLE employees 
IS 'Employee Information'; 

注释相关的视图:
ALL_COL_COMMENTS
USER_COL_COMMENTS
ALL_TAB_COMMENTS
USER_TAB_COMMENTS
查询表的注释
select * from user_tab_comments where table_name= ‘???’;

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/4237.html

(0)
上一篇 2021年7月16日
下一篇 2021年7月16日

相关推荐

发表回复

登录后才能评论