-- 查詢外鍵約束(查某表的所有父表) select c.constraint_name,cc.column_name,rcc.owner,rcc.table_name,rcc.column_name
from user_constraints c,user_cons_columns cc,user_cons_columns rcc where c.owner='SALIEN_SBGL' and c.table_name='JH_NDGXLGJH_TB' and c.constraint_type='R' and c.owner=cc.owner and c.constraint_name=cc.constraint_name and c.r_owner=rcc.owner and c.r_constraint_name=rcc.constraint_name and cc.position=rcc.position
order by c.constraint_name,cc.position; --查詢連接到某表的所有外鍵(查某表的所有子表) select rcc.owner,rcc.table_name,rcc.constraint_name,rcc.column_name,c.table_name,c.constraint_name,cc.column_name
from user_constraints c,user_cons_columns cc,user_cons_columns rcc where lower(c.owner)='d7i' and rcc.table_name='R5HOME'
and c.constraint_type='R' and c.owner=cc.owner and c.constraint_name=cc.constraint_name and c.r_owner=rcc.owner and c.r_constraint_name=rcc.constraint_name and cc.position=rcc.position order by c.constraint_name,cc.position
-- 查詢主鍵唯一鍵約束 select c.constraint_name,c.constraint_type,cc.column_name from user_constraints c,user_cons_columns cc where c.owner='SALIEN_SBGL' and c.table_name='JH_NDGXLGJH_TB' and c.owner=cc.owner and c.constraint_name=cc.constraint_name and c.constraint_type in ('P','U') order by c.constraint_type,c.constraint_name,cc.position;
在Oracle數據字典中查看約束信息 收藏
1、我們創建的對象可以從"USER_"開通的視圖中查看。如果在模式中創建了10張表,那么從USER_TABLES中查詢將返回10行,每一行是關於一張表的特性信息 USER_TABLES不能查看非當前用戶模式下創建的表。 ALL_TABLES視圖不但顯示當前用戶模式下創建的表,而且顯示授權能夠訪問的表信息
我們關心的視圖以下列前綴命名: ·USER_ 當前用戶模式下創建的對象 ·ALL_ 當前用戶模式下創建的對象加上當前用戶能訪問的其他用戶創建的對象。ALL視圖常常包含一個"OWNER"列,反映出能夠訪問的對象的所有者。在USER_TABLES表中不能看到OWNER列是因為你就是在這個視圖中所有表的所有者;在ALL_TABLES中有一個OWNER字段。 ·DBA_ 它提供了整個數據庫的信息。包括數據庫中所有表的名字和擁有者——包括SYS模式下的基本表 這些前綴在限制我們想看到的、需要看到的、應當被允許看到的范圍上是一個幫助。查看當前模式下創建的表,查詢USER_TABLES; 查看所有我們創建的表以及被授權可以從其他用戶模式下訪問的表,查詢ALL_TABLES; 具有DBA或SELECT_CATALOG_ROLE角色的用戶可以查詢DBA_TABLES來查詢數據庫中所有表的列表;
不是所有視圖下都有一個USER、ALL、和DBA前綴,有一些視圖僅存在於dba視圖范圍。比如:DBA_DATA_FILES。 在開發環境中有時會訪問DBA視圖,允許開發人員探究Oracle數據字典是沒有害處的。你可以在不擁有DBA角色的情況下獲得這個權限。一般,把CONNECT和RESOURCE角色給應用開發者,他不能訪問這些,你可以把SELECT ANY TABLE權限或SELECT_CATALOG角色賦給一個用戶,這樣他將被允許訪問整個數據字典。 一個人對數據字典理解的越多,越能接觸到數據庫中復雜的操作,越能對SQL語句優化敏感。
2、數據字典視圖:概要 在數據字典視圖中有一些隱含的關系。發現這些關系常常是使用SQL查詢對數據字典驗證的結果,幸運的是,在數據字典中有許多使用名稱的特征。 例如:USER_TABLES表中每一個表包含一個單獨的行。每一行包含一張表的詳細信息,比如表的物理存儲參數。這些數據提供的擴展信息告訴你表是怎么增長的。 USER_TAB_COLUMNS視圖中在USER_TABLES表中的每一張表的每一行包含一條記錄。如果一張表有10個字段,那么,你將在USER_TAB_COLUMNS表中找到10行記錄,是關於每一字段的詳細信息。比如字段數據類型。字段名TABLE_NAME在USER_TABLE 和USER_TAB_COLUMNS表中都有,因此可以很容易的把他們連接起來。
USER_OBJECTS 用戶對象視圖 ALL_OBJECTS 所有對象視圖 DBA_OBJECTS DBA對象視圖
USER_SEQUENCES 用戶序列對象視圖,在USER_SEQUENCES的記錄也會出現在USER_OBJECTS表中
3、約束視圖 有兩個數據字典視圖提供了約束的詳細信息。USER_CONSTRAINTS和USER_CONS_COLUMNS. 一張表可能有也可能沒有約束,對於一張表的每一個約束在USER_CONSTRAINTS中都有一條記錄描述這個約束。包括約束應用到的表名稱。如果你知道約束名想知道約束類型,查詢USER_CONSTRAINTS表。這個視圖描述了約束的定義。它不提供約束定義在哪些字段名稱上。 在USER_CONS_COLUMNS視圖中顯示約束的字段名稱。如果主鍵是個聯合主鍵,這個視圖中將有這個約束的兩條記錄。聯合主鍵的每一個字段對應一條記錄。每一條記錄通過POSITION(在聯合主鍵中的位置)來區別。
USER_CONSTRAINTS 和USER_CONS_COLUMNS都有字段CONSTRAINT_NAME 和TABLE_NAME. --------------------------------------------------------------------- USER_CONSTRAINTS USER_CONST_COLUMNS --------------------------------------------------------------------- CONSTRAINT_NAME CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME TABLE_NAME COLUMN_NAME POSITION ----------------------------------------------------------------------