首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 查詢索引、約束與視圖的實用 SQL 指令集

     編輯:Oracle 資料庫基礎

前言

開發與維護階段常需檢視索引定義、被索引欄位、約束條件或視圖清單。本文彙整常用的 Data Dictionary 查詢語句,可直接套用。

1. 查詢使用者索引清單與類型

SELECT index_name, index_type, uniqueness, tablespace_name, status
FROM   user_indexes
WHERE  table_name = UPPER('YOUR_TABLE');

2. 查詢索引包含的欄位與順序

SELECT index_name, column_name, column_position, descend
FROM   user_ind_columns
WHERE  index_name = UPPER('YOUR_INDEX')
ORDER BY column_position;

3. 查詢表的約束條件 (PK、FK、UK、CK)

3.1 基本資訊

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。

3.2 約束對應的欄位

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;

4. 查詢使用者視圖清單

SELECT view_name, text_length, text
FROM   user_views
ORDER BY view_name;

5. 進階:一次查詢表的索引、約束、欄位完整資訊

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 預設物件名稱儲存為大寫。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved