開發與維護階段常需檢視索引定義、被索引欄位、約束條件或視圖清單。本文彙整常用的 Data Dictionary 查詢語句,可直接套用。
SELECT index_name, index_type, uniqueness, tablespace_name, status
FROM user_indexes
WHERE table_name = UPPER('YOUR_TABLE');
SELECT index_name, column_name, column_position, descend
FROM user_ind_columns
WHERE index_name = UPPER('YOUR_INDEX')
ORDER BY column_position;
SELECT constraint_name, constraint_type, search_condition, r_constraint_name
FROM user_constraints
WHERE table_name = UPPER('YOUR_TABLE');
constraint_type:P=Primary Key, R=Foreign Key, U=Unique, C=Check。
SELECT c.constraint_name, c.constraint_type, cc.column_name, cc.position
FROM user_constraints c
JOIN user_cons_columns cc
ON c.owner = cc.owner
AND c.constraint_name = cc.constraint_name
WHERE c.table_name = UPPER('YOUR_TABLE')
ORDER BY c.constraint_name, cc.position;
SELECT view_name, text_length, text
FROM user_views
ORDER BY view_name;
SELECT
cols.column_name,
cols.data_type,
cols.data_length,
idx.index_name,
idx.index_type,
idx.uniqueness,
con.constraint_name,
con.constraint_type
FROM user_tab_columns cols
LEFT JOIN user_ind_columns ic ON cols.table_name = ic.table_name AND cols.column_name = ic.column_name
LEFT JOIN user_indexes idx ON ic.index_name = idx.index_name
LEFT JOIN user_cons_columns cc ON cols.table_name = cc.table_name AND cols.column_name = cc.column_name
LEFT JOIN user_constraints con ON cc.constraint_name = con.constraint_name
WHERE cols.table_name = UPPER('YOUR_TABLE')
ORDER BY cols.column_id;
user_* 改為 all_* (需權限) 或 dba_* (需 DBA 權限)。UPPER() 確保大小寫不敏感比對,Oracle 預設物件名稱儲存為大寫。