oracle資料庫之約束

2021-08-07 03:01:09 字數 4274 閱讀 1145

一、非空約束

1、在建立表時設定非空約束(在資料型別後面加上 not  null)

create table tablename(

username varchar2(20) not null,

...);

2、在修改表時新增非空約束(其實也就是修改欄位的定義,但是需要表中沒有資料(確切的說是要新增非空約束的列沒有非空資料))

alter table tablename modify column_name datatype not null
3、刪除非空約束

alter table tablename modify column_name datatype null;
注意:null不能省略,否則刪不掉

二、主鍵約束

一張表只能設計乙個主鍵約束,主鍵約束可以由多個字段構成,成為聯合主鍵或復合主鍵,主鍵約束可以確保資料的唯一性,主鍵約束的字段是非空的

1、在建立表時新增主鍵約束

create table tablename(

id number(6,0) primary key,

...);

create table tablenaem(

...,

[constraint pk_name] primary key(欄位名,...)

);

第一種為列級約束,第二種為表級約束,如果加了constraint,則主鍵名稱不能省略

2、在修改表時新增主鍵約束

alter table tablename add constraint constraint_name primary key(column_name1,...);
注意: constraint_name不能省略 

3、修改主鍵約束的名稱

alter table table_name rename constraint constraint_name to new_constraint_name;
該語句也可以用於修改其他型別約束的名稱

4、禁用主鍵約束

alter table tablename disable | enable constraint constraint_name;
該語句也可以用於禁用和啟用其他型別約束

5、刪除主鍵約束

alter table tablename drop constraint constraint_name;
該語句也可以用於刪除其他型別的約束,對於主鍵約束也可以用下面的語句刪除:

alter table table_name drop primary key [cascade];
因為乙個表的主鍵約束只能有乙個

三、外來鍵約束(外來鍵可以為null)

1、在建立表的時候設定外來鍵約束

create table tablename(

...,

t_id varchar2(10) references other_tablename(column),

...);

references 後面的表叫主表,新建的表叫從表(也可以說是有外來鍵列的表是從表),以上是建立列級約束,下面是建立表級約束:

create table tablename(

...,

[constraint constraint_name] foreign key(this_table_column) references other_tablename(other_table_column) [ on delete cascade ]

);

如果加了constraint,則外來鍵名稱不能省略

2、在修改表的時候設定外來鍵約束

alter table tablename add constraint constraint_name foreign key(column) references other_tablename(column);
注意:constraint_name不能省略 

3、修改外來鍵約束的名稱

alter table tablename rename constraint constraint_name to new_constraint_name;

4、禁用外來鍵約束

alter table tablename disable | enable constraint constraint_name;

5、刪除外來鍵約束

alter table tablename drop constraint constraint_name;
四、唯一約束

1、在建立表的時候設定唯一約束

create table tablename(

column_name datatype unique,

...);

create table tablename(

...,

[constraint constraint_name] unique(column_name)

);

2、在修改表的時候新增唯一約束

alter table tablename add constraint constraint_name unique(column_name);
注意:constraint_name不能省略 

3、禁用 | 啟用唯一約束

alter table tablename disable | enable constraint constraint_name;
4、刪除唯一約束

alter table tablename drop constraint constraint_name;

五、檢查約束

檢查約束的作用是使字段的值具有實際意義,例如:員工的薪水不能為負的,年齡是不可能為好幾百的,檢查約束是可以有多個的

1、在建立表時設定檢查約束

create table tablename(

...,

column_name datatype check(expr),

...);

create table tablename(

...,

[constraint constraint_name] check(expr)

);

2、在修改表時設定檢查約束

alter table tablename add constraint constaint_name check(expr);

3、禁用檢查約束

alter table tablename disable | enable constraint constraint_name;

4、刪除檢查約束

alter table tablename drop constraint constraint_name;

總結:一、主鍵約束與唯一約束的區別

1、主鍵約束字段值必須是非空的,唯一約束允許有乙個空值

2、主鍵約束在每一張表中只能有乙個,而唯一約束則可以有多個

二、1、除了主鍵約束刪除時可以直接在drop後面使用primary key關鍵字以外,其餘約束都是使用如下語句:

alter table tablename drop constraint constraint_name;
2、禁用約束都是使用以下語句:
alter table tablename disable | enable constraint constraint_name;
3、在建立表時新增表級約束時,語句前面的 constraint constraint_name 都可以不加,此時oracle自動為約束起名

4、只有非空約束只能在列級設定,不能在表級設定,其它約束既能在列級設定也能在表級設定,非空約束其實就是修改列的定義

Oracle資料庫之約束

約束 資料的完整性用於確保資料庫資料遵從一定的商業和邏輯規則。在oracle中,資料完整性可以使用約束 觸發器 應用程式 過程 函式 三種實現。而約束易於維護並且效能最好,所以作為維護資料完整性的首選。約束包括五種 not null 不為空 unique 唯一 primary key 主鍵 fore...

mysql資料庫之約束

約束是一種限制,它通過對錶的行或列的資料做出限制,來確保標的資料完整性 唯一性。1 非空約束 not null 欄位的值不能為空 1.1 建立表時新增非空約束 1.2 修改表時新增非空約束 1.3 刪除非空約束 2 唯一約束 unique 要求該列唯一,允許為空,唯一約束可以確保一列或者幾列不出現重...

資料庫之約束關係

包括5種型別 1 檢查約束 通過在定義資料庫表裡,在字段級或者是在表級加入的檢查約束,使其滿足特定的要求。比如以下的表定義 crate table student id serial,name varchar 10 scrore integer check scrore 0 定義分數不能小於0。也可...