Oracle中的約束

來源:互聯網
上載者:User

ORACLE提供了如下幾種約束:NOT NULL 非空、UNIQUE 唯一、PRIMARY KEY 主鍵、FOREIGN KEY 外鍵、CHECK 條件檢查。

一、not null約束

1、建立表時指定約束。

SQL> create table aa3(id number(10) constraint aa3_nn not null,

  2    name varchar2(20),

  3    company varchar2(20));

2、表建立好後再指定約束。

SQL> drop table aa3;

SQL> create table aa3(

  2     id number(10),

  3     name varchar2(20),

  4     company varchar2(20));

SQL> alter table aa3 modify(id constraint aa3_nn not null);

3、刪除約束。

SQL> alter table aa3 drop constraint aa3_nn;

二、check條件檢查

SQL> create table aa3(id number(10) constraint aa3_id_c check(id>=1),

  2    name varchar2(20),

  3    company varchar2(20));

屬於資料行層級條件約束。

 

SQL> create table aa3(id number(10),

  2    name varchar2(20),

  3    company varchar2(20),

  4    constraint aa3_id_c check(id>=1)

  5  );

屬於表級約束。

註:約束中,非空約束必須是列約束。其他類型的約束都即可以是列約束,也可以建立為資料表條件約束。

三、unique約束

1、資料行層級條件約束

SQL> create table aa3(id number(10) constraint aa3_id_u unique,

  2    name varchar2(20),

  3    company varchar2(20));

2、表級約束

SQL> create table aa3(id number(10),

  2    name varchar2(20),

  3    company varchar2(20),

  4    constraint aa3_id_u unique(id)

  5  );

四、主鍵約束

主鍵約束在效果上,相當於唯一約束+非空約束。也就是,即要求列值不能重複,又要求列值必須非空。要注意的是,在同一列上,不能即有主鍵約束,又有唯一約束。

五、外鍵約束

外鍵約束則必須主鍵結合在一起使用。在建立約束時,先必須先有一個主鍵,然後,根據此主鍵,建立一個相關聯的外鍵約束。也就是說,外鍵約束必須對應一個主鍵,不能建立獨立的外鍵約束。

 

建立表

create table emp1(id number(10), name varchar2(20), dept number(10));

create table dept1(dept number(10), dept_name varchar2(20));

 

設定主外鍵約束

alter table dept1 add(constraint dept1_dept_p primary key(dept));

alter table emp1 add(constraint emp1_dept_f foreign key(dept) references dept1(dept));

六、串聯刪除

         delete from dept1 where dept=3;不能刪除資料,違背了主外鍵約束。

         將子表外鍵設為串聯刪除,這樣刪除主表部門3的資料時,子表有關部門3的資料也就跟著刪除了。

alter table emp1 drop constraint emp1_dept_f;

SQL> alter table emp1 add(constraint emp1_dept_f

  2   foreign key(dep        t)

  3   references dept1(dept)

  4   on delete cascade);

ORACLE不允許刪除父表。除非使用級聯約束cascade constraints將先刪除子表上的外鍵,再刪除父表。

drop table dept1 cascade constraints;

七、約束的禁用與啟用

1、約束的禁用

         Alter table 表名 disable constraint 約束名 cascade;

         在主外鍵約束中,先禁用外鍵,再禁用主鍵。

2、約束的啟用

         Alter table 表名 enable constraint 約束名 cascade;

         在主外鍵約束中,先啟用主鍵,再啟用外鍵

 

 

 

來自http://xiangxuehai-jiaer.iteye.com/blog/1448094

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.