Oracle學習日記 約束的建立與管理

2021-08-22 10:25:37 字數 1818 閱讀 4451

–約束的建立與管理

–非空約束

–name varchar2(20)notnull;

–唯一約束:資料列的內容不允許重複

–emaile varchat2(30)unique;

–空值不會收到唯一約束的限制 null

–在oracle中,約束也是物件,使用資料字典檢視

–select * from user_constraints;

–比較麻煩

–建立約束的時候給約束設定乙個名字,格式:約束型別簡寫_欄位 unique約束:uk_email;

constraint uk_email unique(email)–表示在email欄位上設定了約束

–主鍵約束:唯一 + 非空:primary key

constraint pk_mid primarykey(mid);

–一般只在一張表設定乙個主鍵,也可以設定多個:復合主鍵

constraint pk_mid_name primarykey(mid ,name);

–設定了復合主鍵,只有在兩列的內容都相同是表示重複,但極少使用

–檢查約束:在資料更新操作前設定一些過濾條件,只有滿足條件

–才可以更新,使用check 簡稱ck

–例子,設定年齡時需要乙個基本範圍,性別只能是男或女

constraint ck_age check(age between 0 and 250);

–設定過多檢查約束會影響效能,因此一般由程式進行檢查

–在實際工作中較少使用

–檢視約束物件,但這個資料字典只能告訴使用者哪個表上有約束

–使用user_cons_columns表可以知道約束物件對應的列

col owner for a20;

col constraint_name for a20;

col table_name for a20;

col column_name for a20;

select* from user_cons_columns;

–外來鍵約束foreign key 簡稱fk

–作用在兩張資料表上的約束,使字表的資料受到父表的資料的約束

–模擬乙個人有多本書的表

–限制1:在刪除父表之前必須刪除字表

–強制刪除(比如a表有b表的外來鍵,b表有a表的外來鍵)

drop table memeber cascade constraint;–不到萬不得已,不使用

–限制一:父表中的設為外來鍵的關聯字段,必須設定為主鍵約束或者

–唯一約束

–限制三:預設情況下,如果父表記錄中有對應的子表記錄,那麼父表

–記錄無法被刪除,要想刪除要先刪子表記錄

–資料的級聯操作:

1級聯刪除,當父表記錄刪除,子表對應的資料也被刪除

constraint fk_mid foreignkey(mid)preferences memeber(mid)

on delete cascade;

2級聯更新,當父表記錄刪除,子表對應的內容設定為null

on delete set null

約束修改(在開發實踐中,一般不修改約束)

1為表中增加約束:

alter table 表名稱 add constraint 約束名稱 約束型別(字段)

–此語法不能用在非空約束上,要想增加非空約束,只能修改表結構

alter table member modify(name varchar2(20) not null)

2刪除約束

alter table 表名稱 drop constraint 約束名稱

Oracle建立約束 刪除約束

1.定義not null 約束not null 約束只能在列級定義,不能在表級定義 例 create table emp01 eno int not null,name varchar2 10 constraint nn name2 not null,salary number 6,2 2.定義un...

oracle建立表 約束

圖書資訊表 圖書編號,圖書名稱,出版社,出版日期,圖書 圖書作者,借出標識,讀者編號,描述 主鍵 constraint pk name primary key 外來鍵 constraint fk name foreign key column name reference table name co...

Oracle的表建立和約束

oracle建立表同sql server一樣,使用create table命令來完成。建立約束則使用如下命令 語法格式 altertable命令 alter table 表名add constraint d4 約束名約束內容。不論建立表還是約束,與sql server基本相同,注意 在oracle中...