資料字典 Data Dictionary

2021-08-26 10:38:06 字數 2995 閱讀 3236

字典顧名思義就像我們現實中用的字典一樣,當某個字或詞不懂時就去查字典.字典中裝載著我們使用的語言資訊.資料據也像乙個字典一樣裝載著很多資料資訊.

字典裡存貯資料庫結構資訊.比如我們經常用到的關於資料庫物件table,view,index,triger,sequence,synonym等的資訊.

資料字典就是些表和檢視,跟使用者自己建立的表和檢視沒啥兩樣.只是它由系統建立,所以儲存在sys使用者下.

資料字典的表都是以$結尾.

比如表tab$儲存所有使用者建立的表的資訊,表user$儲存使用者名稱和密碼資訊.補充:為了安全起見,這表裡的資訊自然是非常重要的.即使是擁有

最高許可權的sys使用者雖然能檢視這個表,但表裡的使用者名稱密碼都是用md5加密的,所以看到的只是密文.因此理論上來說在oracle裡面是永遠看不到使用者名稱密碼的.但是

我們有修改密碼的僅限.可以在不知道之前密碼的情況下重置密碼.

不過我們基本上不會直接去訪問表,而是訪問根據表生成的檢視.

檢視有三種dba_***, all_***,user_***

以user_為字首的檢視裡有當前使用者所擁有的物件的資訊

以all_為字首的檢視裡有當前使用者所能訪問的物件的資訊,有些物件是屬於其他使用者,但你有訪問許可權.

以dba_為字首的檢視裡有資料庫中所有物件的的資訊.

很容易看到三者的關係.user檢視是all檢視的子集,all檢視是dba檢視的子集.

下面的講解中我只以user檢視為例.因為user檢視裡有的資訊all檢視,dba檢視裡都會有.只要把檢視字首名改下就行.

1.表相關檢視:

user_tables 有使用者所有表的資訊

user_all_tables 包含的資訊比user_tables多一點點.就是包含物件表的資訊,即表中有自定義物件型別的表.

user_tab_columns 使用者的表列資訊.例如要查詢表arwen中所有列的資訊select * from user_tab_columns where table_name='arwen';

2.檢視相關檢視:

user_views

3.索引相關檢視

user_indexes(同義詞ind) 使用者的索引資訊.

user_ind_columns 使用者的索引對應的表列資訊

4.約束條件相關檢視

user_constraints 使用者的物件約束資訊 :如查詢表arwen中有哪些約束條件:select * from user_constraints where table_name='arwen';

注意constraint type都是簡寫的n,u,p,f,c分別對應not null,unique,primary key,foreign key,check

user_cons_columns 使用者的約束對應的表列資訊

5.同義詞相關檢視:

user_synonym(同義詞syn)

6.序列相關檢視:

user_sequence(同義詞seq)

7.目錄相關檢視:

dba_directories (不管任何使用者建立dir後貌似owner都是sys使用者了.所以也不能用user_directories查詢)

oracle中如果要訪問作業系統中的某個目錄不能直接訪問.必須要根據目錄建立乙個directory物件,然後用使用directory物件.

例如create directory temp_dir as c:\temp;

8.觸發器相關檢視:

user_triggers

9.所有物件相關檢視

user_catalog 當前使用者所有表,檢視,同義詞,序列的資訊

user_tables 當前使用者所有表的資訊

user_objects有使用者所有物件的資訊.user_catalog相當於它的子集.

8.許可權相關的檢視

user_sys_privs 當前使用者的系統許可權資訊 :比如建立表的許可權啊,建立新使用者的許可權啊

user_tab_privs 當前使用者的物件許可權資訊:對其他使用者的物件的讀寫執行許可權

user_col_privs除了可以賦予其他使用者訪問某個表的許可權外,還可以更細一步賦予訪問表中某一列的許可權.這個檢視包括自己賦予其他使用者訪問某列的許可權和別人賦予自己訪問某列的許可權.

user_role_privs當前使用者的角色許可權資訊 每個角色有相應的一些許可權.有時為簡單的賦予許可權,先建立乙個角色然後新增相應許可權.再把角色賦予給某些使用者.

上面提到的檢視名字還只是一小部分,已經是夠難記住的了,如果是全部更沒法記住了.不過不用擔心,oracle把資料字典所有檢視的資訊儲存在乙個叫dictionary的檢視中.它還有個同義詞dict.

它相當於是字典的字典了.它只有兩列:table_name,comments.注意table_name不要顧名思義以前就是表名,實際上它是所有檢視的名字,就是上面提到的以user_,all_,dba_為字首的檢視.而真正的表反而不包括在內.comments就是描述資訊,說明那個檢視幹嘛用的.

如果你想查詢跟table有關的資訊,但不知道有哪些資料字典有表的資訊.你就可以這樣查select * from dictionary where table_name like '%table%';這樣查詢的結果還是很多,你就真加個限定條件字首user_

select * from dictionary where table_name like '%user_%table%';

你會看到user_tables,接下來你再查詢user_tables就可以了解跟表有關的資訊了.

所以你只要記住dict這個檢視,再加上會在where語句中加些條件進行模糊查詢就行了.

關於資料字典

1 什麼是資料字典 data dictionary 應該承認,每個人對資料字典的理解有不同的地方,因為並沒有這方面的標準,下面是三個大同小異的定義 1 資料字典是以資料庫中資料基本單元為單位,按一定順序排列,對其內容作詳細說明的資料集。2 資料字典中存放著系統中所有資料的定義,即對所有資料庫結構的描...

Oracle 資料字典

資料字典包括以下內容 1.所有資料庫schema物件的定義 表,檢視,索引,聚簇,同義詞,序列,過程,函式,包,觸發器 2.資料庫的空間分配和使用情況 3.欄位的預設值 4.完整性約束資訊 5.oracle使用者名稱,角色,許可權等資訊 6.審計資訊 7.其他資料庫資訊 資料字典有4部分組成 內部r...

oracle 資料字典

oracle資料字典 select from user tab columns 檢視使用者列物件 select from user tab comments 檢視使用者表的備註 select from user tab statistics select from all users 所有使用者 s...