我們可以使用下面語句從all_constraints視圖中查看某表上的約束:
成都創(chuàng)新互聯(lián)公司服務項目包括永和網(wǎng)站建設、永和網(wǎng)站制作、永和網(wǎng)頁制作以及永和網(wǎng)絡營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,永和網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務的客戶以成都為中心已經(jīng)輻射到永和省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
SELECT
constraint_name,
table_name,
r_owner,
r_constraint_name
FROM
all_constraints
WHERE
table_name
=
'table_name'
and
owner
=
'owner_name';
另一個視圖ALL_CONS_COLUMNS也包括組成表上約束列的信息。
工具/材料
SQL Developer
01
首先打開SQL Developer軟件,找一個沒有主鍵約束的表,如下圖所示
02
然后我們新建一個查詢,在界面中輸入如下的約束修改語句,如下圖所示,主要通過add constranint來添加約束
03
編寫完約束添加語句以后,點擊工具欄中的執(zhí)行按鈕,如下圖所示,如果輸出欄顯示已變更則證明主鍵約束創(chuàng)建成果
04
然后我們進入STUDENT表的約束添加頁中可以看到,我們加的主鍵約束已經(jīng)添加進去了,如下圖所示
05
另外,創(chuàng)建表的時候可以直接添加主鍵約束,如下圖所示,直接在表創(chuàng)建語句中添加constraint即可
06
表創(chuàng)建完以后,記得在左側(cè)刷新數(shù)據(jù)庫信息,如下圖所示,因為你創(chuàng)建的信息不刷新的話不會更新
07
最后打開你所創(chuàng)建的表,看到你添加的主鍵約束已經(jīng)加入進來了,這種方式的效果alter的方式是一樣的
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視圖關聯(lián)一下。
CONSTRAINT_TYPE 的相關解釋如下:
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)容。
如果是外鍵約束,通過R_CONSTRAINT_NAME 列能看到參考約束內(nèi)容。
我們可以使用下面語句從all_constraints視圖中查看某表上的約束。
SELECT constraint_name, table_name, r_owner, r_constraint_name 。
FROM all_constraints 。
WHERE table_name = 'table_name' and owner = 'owner_name'。
另一個視圖ALL_CONS_COLUMNS也包括組成表上約束列的信息。
甲骨文股份有限公司(NASDAQ:ORCL,Oracle)是全球大型數(shù)據(jù)庫軟件公司??偛课挥诿绹又菁t木城的紅木岸(Redwood Shores),現(xiàn)時首席執(zhí)行官為公司創(chuàng)辦人勞倫斯·埃里森(Lawrence J. Ellison)。
2016年11月6日,甲骨文公司(Oracle)股東同意以 93 億美元的資金收購Netsuite公司,每股價格約為 109 美元。
約束用于限制加入表數(shù)據(jù)的類型,目的是保證數(shù)據(jù)的一致性和完整性
創(chuàng)建格式:在創(chuàng)建表時規(guī)定約束(在Create添加),也可以在創(chuàng)建之后添加(Alter table)。
約束類型:NOT NULL、UNIQUE、PRIMARY KEY、FOREIGN KEY、CHECK、DEFAULT。
非空約束就是限制必須為某個列提供值,不允許有空值的存在。
空值(NULL)是不存在的值,它既不是數(shù)字0也不是空字符串,而是不存在未知的情況,即:該列的所有值不能為空,但可以為空字符或者0。
結(jié)果:通過desc查看會發(fā)現(xiàn)Nullable那一列的Y消失,表示此列不能為空。且在插入數(shù)值的時候此列必須添加數(shù)值,否則會報錯。
取消非空約束使用alter方法:alter table test1 modify Author null; 設置test1的Author可以
唯一性約束強調(diào)所在的列不允許有相同的值,但可以有多個Null。
其定義比主鍵約束弱,即他的列允許有空值(主鍵不允許有空值),唯一性約束的主要作用是保證在除主鍵外,其他列值得唯一性。
即:直接在列后面添加unique,
或在列后面添加 constraint 約束名 unique,
或在最后添加constraint 約束 unique(列名),
或者alter table 表名 add constraint 約束名 unique(列名);
建議使用的方法為alter和在最后添加最后添加constraint 約束 unique(列名)。
注:添加約束名的好處為:便于刪除操作,在刪除時需要通過約束名來完成操作。同時如果不添加約束名則系統(tǒng)會自動生成約束名,在表移動等操作時,約束名也會更改,會造成后期操作的麻煩。
取消唯一性約束:alter table test3 drop constraint QQ_UK2;
主鍵約束唯一地標識了每一行記錄(非空+唯一),在一個表中,最多只能有一個主鍵約束,主鍵約束既可以由一個列組成,也可以由兩個或兩個以上列組成(這種稱聯(lián)合主鍵)。
具體的方法和添加唯一約束相同,建議使用的方法為alter和在最后添加最后添加constraint 約束 unique(列名)。
刪除主鍵:alter table 表名 drop constraint 約束名
外鍵約束主要是在B表中的某一列受到A表的制約,B的那一列的值只能是A內(nèi)的值,比如工資表的員工號必須受員工表的員工號限制一樣,工資表不能有不存在的員工號。
一般外鍵約束會使用兩個表進行關聯(lián),外鍵是指"當前表"引用"另一個表"的某一列或某幾列。在另一個表中,被引用的列必須具有主鍵約束或者唯一性約束,不存在的數(shù)據(jù)不能出現(xiàn)在當前表的對應列中。一般情況下當刪除被引用表中數(shù)據(jù)時,該數(shù)據(jù)也不能出現(xiàn)在外鍵列中,如果存在則刪除失敗。
刪除外鍵約束:alter table test5_1 drop constraint FK_test_5_1;
check約束是為了讓表中某字段值只能輸入固定的值。
check設置數(shù)值范圍:constraint check 表名 check (列名 between 小范圍 and 大范圍);
設置為大寫:constraint check 表名 check (列名 = upper(列名));
取消 alter table test6_2 drop constraint check_test_6_2;
默認約束是設置列的默認值,即當插入一行時,若不給出該列的值,就用默認值代替。
結(jié)果:在添加數(shù)據(jù)的時候,如果在設置有默認值的列沒有添加數(shù)據(jù)則會把默認值添加進去。
取消默認約束 alter table test2 modify BOOKNAME default null;
注:
add用于修改字段類型和長度的(即修改字段的屬性)
modify修改表的數(shù)據(jù)結(jié)構(gòu)。
update是修改數(shù)據(jù)內(nèi)容的。
drop是刪除數(shù)據(jù)內(nèi)容。
查看表的約束條件有三個視圖:
1、dba_constraints、all_constraints、user_constraints。
2、其中:dba_constraints視圖需要DBA權限才能查詢。
3、all_constraints、user_constraints普通用戶查詢。
擴展資料:
Oracle數(shù)據(jù)庫使用約束(constraints)來防止無效的數(shù)據(jù)進入表中,保護數(shù)據(jù)的實體完整行約束定義在表級,如果表與表之間有從屬關系,約束可以防止表的刪除,通過約束字段,強制用戶在插入更新和刪除數(shù)據(jù)時必須遵循一定的規(guī)則。
約束定義語法: create table 表名(字段名 數(shù)據(jù)類型 約束類型) 或 create table 表名(字段名1 數(shù)據(jù)類型,字段名2,數(shù)據(jù)類型 constraints 約束別名 約束類型 (字段))