新增 刪除約束 Oracle

2021-09-30 09:55:29 字數 2505 閱讀 5746

增加一列或者多列

alter table 表名 add(column_name datatype[,..]);

修改一列或者多列(修改列的型別或者是長度)

alter table 表名 modify(column_name datatype[,..]);

刪除一列

alter table 表名 drop column column_name;

刪除多列

alter table 表名 drop(column_name[,..])

建表階段新增約束(字段級|表級)

非空約束(not null)

1)確保其所在字段值不能為空

2)非空約束只能定義為字段級別

基本語法:column_name datatype not null

唯一約束(unique)

1)確保其所在字段值不能重複

2)允許空值

3)既可以定義為字段級別也可以定義到表級別

4)可以在乙個欄位上建立唯一約束

(此字段值不能重複,既可以是表級別也可以是字段級別),

也可以在幾個欄位上建立唯一約束(這幾個欄位的組合值不能重複,只能是表級別的)

5)oracle會自動為建立唯一約束的字段建立索引

字段級別:column_name datatype unique

表級別:

constraint uni_name unique(column_name[,..])自定義約束名

或者unique(column_name[,..]) 系統自動分配約束名

刪除約束:alter table 表名 drop constraint 約束名;

主鍵約束(primary key)

1)確保所在字段值非空且唯一

2)乙個表最多隻允許乙個主鍵,當然這個主鍵可以基於乙個欄位也可以基於多個字段

3)非聯合主鍵既可以是字段級別的也可以是表級別的,聯合主鍵只能是表級別的

4)oracle會自動為其建立索引

字段級別:column_name datatype primary key

表級別:

constraint p_k primary key(column_name[,..])自定義約束名

或者primary key(column_name[,..])系統自動分配約束名

一般情況下我們選擇通過序列讓系統去幫我們確保不違反主鍵約束

create table 表名(column_name datatype primary key,column_name2 datatype[,..]);

create sequence 序列名;

insert into 表名 values(序列名.nextval,值[,..])

刪除主鍵:

alter table 表名 drop constraint 約束名;

或者alter table 表名 drop primary key;

外來鍵約束(foreign key)

1)確保所在欄位的值與另乙個表中的字段值有一定的關聯關係

2)既可以定義為字段級別也可以定義為表級別

3)被外來鍵關聯上的另乙個表的字段必須唯一(即此字段必須是

unique或者primary key)

字段級別:column_name datatype reference 父表名(欄位名)

表級別:

constraint f_k foreign key(column_name) references 父表名(欄位名)  --自定義約束名

或者foreign key(column_name) references 父表名(欄位名)  --系統自動分配約束名

刪除父表(主表):

方式一:先刪除子表或者只刪除子表的外來鍵約束

然後使用drop table 表名刪父表

方式二:drop table 父表名 cascade constraints;

檢查約束(check)

1)確保所在欄位的值在check所給的範圍裡面

2)既可以定義為字段級別也可以定義為表級別

字段級別:column_name datatype check(值1,值2)

表級別:constraint c_k check(條件)--自定義約束名

或者check(條件)--系統自動分配約束名

建完錶後新增約束

alter table 表名 add constraint 約束名 unique(column_name[,..])--自定義約束名

alter table 表名 add unique(column_name[,..]);--系統自動分配約束名

主鍵約束、外來鍵約束、檢查約束的新增形如唯一約束

非空約束的新增

alter table 表名 modify(column_name not null);

禁用約束:

alter table 表名 disable constraint 約束名;

啟用約束

alter table 表名 enable 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...

約束新增和刪除

約束的目的就是確保表中的資料的完整性。常用的約束型別如下 主鍵約束 primary key constraint 要求主鍵列唯一,並且不允許為空 唯一約束 unique constraint 要求該列唯一,允許為空,但只能出現乙個空值 檢查約束 check constraint 某列取值範圍限制 格...

oracle的主鍵約束的新增和刪除

oracle的主鍵約束新增刪除 1 建立表的同時建立主鍵約束 一 無命名 create table accounts accounts number number primary key,accounts balance number 二 有命名 create table accounts acco...