十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
我們可以使用下面語(yǔ)句從all_constraints視圖中查看某表上的約束:
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序制作、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了定日免費(fèi)建站歡迎大家使用!
SELECT
constraint_name,
table_name,
r_owner,
r_constraint_name
FROM
all_constraints
WHERE
table_name
=
'table_name'
and
owner
=
'owner_name';
另一個(gè)視圖ALL_CONS_COLUMNS也包括組成表上約束列的信息。
不知道你有沒(méi)有pl/sql。在pl/sql的sql window 里寫(xiě)上你這你這個(gè)表的表名,按住ctrl鍵再用鼠標(biāo)點(diǎn)這個(gè)表名,就會(huì)出現(xiàn)關(guān)于這個(gè)表的信息窗然后點(diǎn)擊‘key’這個(gè)選項(xiàng)卡就可以看到唯一鍵約束,主鍵約束,外鍵,點(diǎn)擊check可以看到其他完整性約束的名
不用寫(xiě)語(yǔ)句也很直觀
SELECT?UC.OWNER,
UC.CONSTRAINT_NAME,
UC.CONSTRAINT_TYPE,
UC.TABLE_NAME,
UCC.COLUMN_NAME,
UC.SEARCH_CONDITION,
UC.R_CONSTRAINT_NAME
FROM?USER_CONSTRAINTS?UC
INNER?JOIN?USER_CONS_COLUMNS?UCC
ON?(UC.CONSTRAINT_NAME?=?UCC.CONSTRAINT_NAME);
USER_CONSTRAINTS和?USER_CONS_COLUMNS視圖關(guān)聯(lián)一下。
CONSTRAINT_TYPE 的相關(guān)解釋如下:
C - Check constraint on a table
P - Primary key
U - Unique key
R - Referential integrity
V - With check option, on a view
O - With read only, on a view
H - Hash expression
F - Constraint that involves a REF column
S - Supplemental logging
如果是check約束,那么在search_condition列能看到具體的內(nèi)容。
如果是外鍵約束,通過(guò)R_CONSTRAINT_NAME 列能看到參考約束內(nèi)容。
查詢外鍵約束的列名:
select
*
from
user_cons_columns
cl
where
cl.constraint_name
=
外鍵名稱
select
table_name,constraint_name,constraint_type
from
user_constraints
where
table_name='大寫(xiě)的表名'
select
table_name,constraint_name,constraint_type
from
dba_constraints
where
table_name='大寫(xiě)的表名'
---------另外以下可以只查看表中的索引
select
*
from
USER_INDEXES
where
table_name
=
'大寫(xiě)的表名'
select
*
from
ALL_INDEXes
where
table_name
=
'大寫(xiě)的表名'
我們可以使用下面語(yǔ)句從all_constraints視圖中查看某表上的約束:
SELECT
constraint_name,
table_name,
r_owner,
r_constraint_name
FROM
all_constraints
WHERE
table_name
=
'table_name'
and
owner
=
'owner_name';
另一個(gè)視圖ALL_CONS_COLUMNS也包括組成表上約束列的信息。
查看表索引、主鍵、外鍵、約束
(包括索引名,類型,構(gòu)成列)
SELECT T.*, I.INDEX_TYPE
FROM USER_IND_COLUMNS T,USER_INDEXES I
WHERE T.INDEX_NAME = I.INDEX_NAME
AND T.TABLE_NAME = I.TABLE_NAME
AND T.TABLE_NAME = 'ORG_DLF' ----指定表
AND T.TABLE_OWNER= 'ODSRPT_SIT2'; ----指定用戶
(包括名稱,構(gòu)成列)
SELECT CU.*
FROM DBA_CONS_COLUMNS CU, DBA_CONSTRAINTS AU
WHERE CU.CONSTRAINT_NAME = AU.CONSTRAINT_NAME
AND AU.CONSTRAINT_TYPE = 'P'
AND AU.TABLE_NAME = 'LOAN_APPLICATION_FEE' -----指定表名
AND CU.OWNER='ODSRPT_SIT2'; -----指定用戶名
(包括表名稱,構(gòu)成列)
SELECT CU.COLUMN_NAME,AU.TABLE_NAME
FROM DBA_CONS_COLUMNS CU, DBA_CONSTRAINTS AU
WHERE CU.CONSTRAINT_NAME = AU.CONSTRAINT_NAME
AND AU.CONSTRAINT_TYPE = 'U'
AND AU.OWNER='RPT_UAT2' -----指定用戶名
AND AU.TABLE_NAME = 表名 ; -----指定表名
Select a.Owner 外鍵擁有者,
a.Table_Name 外鍵表,
c.Column_Name 外鍵列,
b.Owner 主鍵擁有者,
b.Table_Name 主鍵表,
d.Column_Name 主鍵列,
c.Constraint_Name 外鍵名,
d.Constraint_Name 主鍵名
From User_Constraints a,
user_Constraints b,
user_Cons_Columns c, --外鍵表
user_Cons_Columns d --主鍵表
Where a.r_Constraint_Name = b.Constraint_Name
And a.Constraint_Type = 'R'
And b.Constraint_Type = 'P'
And a.r_Owner = b.Owner
And a.Constraint_Name = c.Constraint_Name
And b.Constraint_Name = d.Constraint_Name
And a.Owner = c.Owner
And a.Table_Name = c.Table_Name
And b.Owner = d.Owner
And b.Table_Name = d.Table_Name;
查看表的約束條件有三個(gè)視圖:
1、dba_constraints、all_constraints、user_constraints。
2、其中:dba_constraints視圖需要DBA權(quán)限才能查詢。
3、all_constraints、user_constraints普通用戶查詢。
擴(kuò)展資料:
Oracle數(shù)據(jù)庫(kù)使用約束(constraints)來(lái)防止無(wú)效的數(shù)據(jù)進(jìn)入表中,保護(hù)數(shù)據(jù)的實(shí)體完整行約束定義在表級(jí),如果表與表之間有從屬關(guān)系,約束可以防止表的刪除,通過(guò)約束字段,強(qiáng)制用戶在插入更新和刪除數(shù)據(jù)時(shí)必須遵循一定的規(guī)則。
約束定義語(yǔ)法: create table 表名(字段名 數(shù)據(jù)類型 約束類型) 或 create table 表名(字段名1 數(shù)據(jù)類型,字段名2,數(shù)據(jù)類型 constraints 約束別名 約束類型 (字段))