在資料庫系統中,有些資料表或者檢視表會記錄整個資料庫相關資料,
可能包含資料表資訊、檢視表資訊等目前資料庫的狀態。
早期只顧開發的我,其實也不太會去在意這些資料表,
當專案開始,規劃功能與資料表後,按照關聯性資料庫的規則,作一點正規化,
符合功能需求的資料庫就開始運作了,然後就開始顧著開發功能。
但隨著接觸不同的維護案後,許多問題必須去了解資料庫發生甚麼事情,
漸漸的這些有關資料表、檢視表等資料庫目前狀態的資訊就越來越重要。
在oracle 資料庫中,Data Dictionary View屬於唯讀的資訊,它包含了:
1.定義所有資料庫物件(table,view,index..等)
2.每個欄位的預設值
3.完整的限制資訊
4.oracle使用者的姓名
5.角色與權限內容
6.其他依班資料庫資訊
Data Dictionary View 命名說明如下:
1.USER:使用者的檢視表,包含該使用者可以看到的屬於自己的資料物件
2.ALL:使用者有權限可以看到的資料物件
3.DBA:資料庫管理者可以讀取的資料,包含所有使用者的物件
4.V$:校能相關的資料
觀看Dictionary描述:
DESCRIBE DICTIONARY
查看USER_OBJECT相關語法
對使用者而言,有用的回傳的資料包含,物件名稱、類型、產生資料日期、最後修改日期與驗證狀態
類型可以讓我們知道這個物件是index, table還是trigger...等
查看資料表相關資訊
DESCRIBE user_tables
查看資料欄相關資訊
DESCRIBE user_tab_columns
查看資料限制相關資訊
DESCRIBE USER_CONSTRAINTS
DESCRIBE USER_CONS_COLUMNS
限制中,有個conition的欄位:
C: check constraints on table
P: private key
U: unique key
R: referential integrity
V: with check option, on view
O: read only, on view
限制中,有個delet_rule欄位:
cascade: 父項資料被刪除,子項資料也會被刪除
no action: 當子項沒資料的時候,父項才可以刪除
限制中,有個status欄位
ENABLED: 限制有作用
DISABLED: 限制無作用
查詢檢視表相關資訊
DESCRIBE user_views
若要觀看檢視表相關資料,必須使用text欄位
select text from user_view where view_name = 'USER_TEST_VIEW'
但他只能顯示前80個字元,若要看完整的內容,可以先設定LONG
SET LONG 1000
查詢SEQUENCE
DESCRIBE user_sequences
查詢synonyms
DESCRIBE user_synonyms
增加commentY在資料表或欄位上
comment on table user_table is 'comment test'
如果要移除comment,給予' '即可
comment on table user_table is ' '