oracle 資料庫的約束

2021-07-13 21:36:37 字數 2604 閱讀 5992

為了使我們的資料符合一定的規則

約束有五種型別,主鍵約束,外來鍵約束,非空約束,唯一性約束,檢查約束

約束有兩種定義方法:第一種是在定義列的時候定義約束,叫做列級定義。

第二種是所有列全部定義完後,在定義約束,該約束叫做表級定義(注意 not null只能在列級中定義),對於多個屬性構成的碼只能使用表級定義此約束

非空約束      nn_表名_列名

唯一約束     uk_表名_列名

主鍵約束     pk_表名

外來鍵約束     fk_表名_列名

條件約束     ck_表名_列名

預設約束     df_表名_列名

定義了非空約束後,插入資料的時候此列不能為空

列級語法格式:

create table table_name(column data_type  not null,.............);

增加:create table table_name modify column not null;

定義了唯一性約束後,此列的值不能重複,但是可以為空

列級語法格式:

create table table_name(column data_type constraint  constrint_name(約束名) unique,.............);

增加約束:alter table table_name add constrint constraint(約束名)  unique(列名);

表級定義:create table table_name(column data_type,.............,constrint constraint(約束名)  unique(列名));

定義該列符合某種規則

列級語法格式:

create table table_name(column data_type constraint  constrint_name(約束名) check(規則 ),.............);

增加約束:alter table table_name add constrint constraint(約束名)  check(規則);

表級定義:create table table_name(column data_type,.............,constraint  constrint_name(約束名) check(列名  規則));

唯一的表示一行資料,定義了主鍵約束後,改行不能為空,也不能重複

列級定義語法格式:create table table_name(column data_type constraint  constrint_name(約束名) primary key,.............);

增加約束:alter table table_name add constrint constraint(約束名) primary key;

表級定義:create table table_name(column data_type,.............,constraint  constrint_name(約束名) primary key(列名));

用於定義主表和從表之間的關係,外來鍵約束定義在從表上,對應的在主表上必須有主鍵約束或unique約束

在定義外來鍵約束後,要求外來鍵約束的列必須在主表的主鍵列存在或者為null

列級定義語法格式:create table table_name(column data_type constraint  constrint_name(約束名)foreign key (從表 從表的主鍵名)references (主表,主表的主鍵),.............);

增加約束:alter table table_name add constrint constraint(約束名) foreign key (主表 主表的主鍵名);

表級定義:create table table_name(column data_type ,.............,constraint  constrint_name(約束名)foreign key (主表 主表的主鍵名)references (主表,主表的主鍵));

外來鍵約束注意的問題:

1.如果在設定外來鍵時沒有加 on delete set null 或者on delete cascade ,那麼刪除有被從表中引用的主表中的資料時,將無法刪除該資料。

2.在設定外來鍵時加上on delete cascade,就可以之間刪除主表中的資料,並且從表中的資料也一塊刪除

3.在設定外來鍵時加上on delete set null,就可以之間刪除主表中的資料,從表中的此項資料被置為空值

直接查詢 user_constraints就可以看到有哪些約束

語法格式;

select owner,constraint_name,table_name from user_constraints;
這個約束只告訴了名字,而並沒有告訴在哪個欄位上有此約束,這就需要檢視另外一張資料字典表「user_cons_columns」;

語法格式;

select owner,constraint_name,table_name,column_name from user_cons_columns;

alter table table_name drop constraint 約束名

oracle資料庫之約束

一 非空約束 1 在建立表時設定非空約束 在資料型別後面加上 not null create table tablename username varchar2 20 not null,2 在修改表時新增非空約束 其實也就是修改欄位的定義,但是需要表中沒有資料 確切的說是要新增非空約束的列沒有非空資...

Oracle資料庫之約束

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

Oracle資料庫中的約束

上週應聘一家公司的實習生,筆試時遇到乙個題 很遺憾,一不小心就把上學期學得挺好的oracle忘完了,突然想起來,查閱資料,同時在此記錄一下。為了維護資料的完整性,oracle提供了5種約束 not null 非空 約束該列一定要輸入值。unique key 唯一 當定義了唯一約束後,該列值是不能重複...