1. 程式人生 > >ORACLE約束詳細介紹

ORACLE約束詳細介紹



一 ADD約束名
not null(非空)
方法一:
SQL> create table t1(id number,name varchar2(20) constraint nn_t1_id not null);
SQL> create table t1(id number,name varchar2(20) not null);
SQL> select constraint_name,constraint_type,owner from user_constraints;
CONSTRAINT_NAME        C    OWNER
------------------------------ - ----------
NN_T1_ID                 C    SCOTT
方法二:
SQL> alter table t1 modify number constraint nn_t1_id not null;
方法三:
SQL> alter table t6 add constraint nn_t6_ck1 check(name is not null);

2 unique(唯一)
方法一:
SQL> create table t1(id number,qq number,constraint un_t1_qq unique(qq));
方法二:
SQL> alter table t1 add constraint un_t1_qq unique(qq);

3  primary key(主鍵)
方法一:
SQL> create table t1(id number,qq number,constraint pk_t1_id primary key(id));
SQL> create table t1(id number primary key,qq number);
方法二:
SQL> alter table t1 add constraint pk_t1_id primary key(id);

4  foreign key(外來鍵)
方法一:
SQL> create table t2(id number,cc number,constraint fk_t2_id foreign key(id) references t1(id));
方法二:
SQL> alter table t1 add constraint pk_t2_id foreign key(id) references t1(id);

當定義了外部鍵約束之後,要求外部鍵列的資料必須在主表的主鍵列(或惟一列)中存在,或者為NULL,FOREING KEY約束既可以在列級定義,也可以在表級定義。

關鍵字說明:

SQL> create table t1(id number,qq number,constraint pk_t1_id primary key(id));
SQL> create table t2(id number,sal number,constraint fk_t2_id foreign key(id) references t1(id));

SQL> delete t1; ----由於主外來鍵約束,無法刪除主表

SQL> insert into t2 values(2,2); ---由於主外來鍵的約束,無法在外來鍵表插入主鍵中id列沒有的值

SQL> drop table t2 purge;
SQL> create table t2(id number,sal number,constraint fk_t2_id foreign key(id) references t1(id) on delete cascade);  -----外來鍵表新增級聯刪除引數
SQL> delete t1;   ----刪除主鍵表上的資料,級聯刪除外來鍵表上的資料
1 row deleted.

5  check(檢查性約束)
方法一:
SQL> create table t3(id number,sal number,constraint ck_t3_sal check(sal between 5000 and 50000));
方法二:
SQL> alter table t3 add constraint ck_t3_sal check(sal>5000);


二 修改約束名

在同一個方案中,約束名必須惟一,並且約束名也不能與其他物件同名。當用IMPDP工具或者IMP工具匯入其他物件時,如發現有同名的物件,將會出錯

語法:

ALTER TABLE table_name RENAME CONSTRAINT old_constraint_name  TO new_constraint_name;

三 禁止約束

禁止約束指使約束臨時失效。當禁止了約束之後,約束規則將不再生效。在使用SQL*LOADER或INSERT裝載資料之前,為了加快資料裝載速度,應該首先禁止約束,然後裝載資料。

語法:
ALTER TABLE table_name DISABLE CONSTRAINT constaint_name [CASCAED];--CASCAED用於指定級聯禁止從表的外部鍵

四 啟用約束

語法:
ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;

五 刪除約束

當刪除特定表的主鍵約束時,如果該表具有相關的從表,那麼在刪除主鍵約束時必須帶有CASCAED選項
語法:

ALTER TABLE table_name DROP CONSTRAINT constraint_name |PRIMARY KEY

六 顯示資訊

1.USER_CONSTRAINTS
2.USER_CONS_COLUMNS