SQL使用總結三(系統目錄)
系統目錄是一些表和檢視的集合,它們包含了關於資料庫的資訊。每個資料庫都有系統目錄,其中定義了資料庫的結構,還有資料庫所包含資料的資訊。舉例來說,用於資料庫裡所有表的資料目錄語言(DDL)就儲存在系統目錄裡。
在具體實現裡,系統目錄的內容會被劃分為物件的邏輯組,以表的形式供資料庫管理員(DBA)和其他資料庫使用者訪問。
系統目錄或者是在資料庫建立時自動建立的,或是有DBA在資料庫建立之後立即建立的。舉例來說,在Oracle裡,系統目錄的所有者是一個名為SYS的使用者,它對資料庫具有完全的許可權。在Microsoft SQL Server裡, SQL服務程式的系統目錄位於master資料庫裡。在MySQL裡,系統目錄位於mysql資料庫裡。
系統目錄包含的內容有:
- 使用者賬戶和預設設定;
- 許可權和其他安全資訊;
- 效能統計;
- 物件大小估計;
- 物件變化;
- 表結構和儲存;
- 索引結構和儲存;
- 資料庫其他物件的資訊,比如檢視、異名、觸發器和儲存過程;
- 表約束和應用完整性資訊;
- 使用者會話;
- 審計資訊;
- 內部資料庫設定;
- 資料庫檔案的位置。
不同實現裡的系統目錄表格
產品 |
表格名稱 |
內容 |
SQL Server |
SYSUSERS |
資料庫使用者 |
SYS.DATABASES |
全部資料庫片斷 |
|
SYS.DATABASE_PERMISSIONS |
全部資料庫許可權 |
|
SYS.DATABASE_FILES |
全部資料庫檔案 |
|
SYSINDEXES |
全部索引 |
|
SYSCONSTRAINTS |
全部約束 |
|
SYS.TABLES |
全部資料庫表 |
|
SYS.VIEWS |
全部資料庫檢視 |
|
Oracle |
ALL_TABLES |
使用者訪問的表 |
USER_TABLES |
使用者擁有的表 |
|
DBA_TABLES |
資料庫裡全部表 |
|
DBA_SEGMENTS |
片斷儲存 |
|
DBA_INDEXES |
全部索引 |
|
DBA_USERS |
資料庫裡的全部使用者 |
|
DBA_ROLE_PRIVS |
分配的角色 |
|
DBA_ROLES |
資料庫裡的角色 |
|
DBA_SYS_PRIVS |
分配的系統許可權 |
|
DBA_FREE_SPACE |
資料庫剩餘空間 |
|
V$DATABASE |
資料庫的建立 |
|
V$SESSION |
當前會話 |
|
MySQL |
COLUMNS_PRIV |
欄位許可權 |
DB |
資料庫許可權 |
|
FUNC |
自定義函式的管理 |
|
HOST |
與MySQL相關聯的主機名稱 |
|
TABLES_PRIV |
表許可權 |
|
USER |
表關係 |
警告:不要手動修改系統目錄中的表