Oracle中的約束簡單入門試驗
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;
在主外來鍵約束中,先啟用主鍵,再啟用外來鍵
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29144194/viewspace-1082643/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle中的約束Oracle
- Oracle約束簡介Oracle
- Mysql入門【Mysql約束】MySql
- Oracle約束的學習與測試Oracle
- xml--概述,快速入門,約束XML
- Oracle約束Oracle
- oracle 約束Oracle
- 10、Oracle中的約 束constraintOracleAI
- JavaScript------表單約束驗證DOM方法JavaScript
- Oracle唯一約束中NULL的處理OracleNull
- Oracle定義約束 外來鍵約束Oracle
- oracle的延遲約束Oracle
- Oracle外來鍵約束中NULL的處理OracleNull
- Python 簡單入門指北(試讀版)Python
- oracle 約束詳解Oracle
- oracle鍵約束控制Oracle
- IDELAY約束測試IDE
- 修改oracle的約束欄位Oracle
- Android入門教程:ConstraintLayout約束佈局AndroidAI
- odoo 開發入門教程系列-約束(Constraints)OdooAI
- 如何在ORACLE中修改表的約束條件啊Oracle
- Azkaban 簡單入門
- postgresql 簡單入門SQL
- SprintBoot簡單入門boot
- Vue簡單入門Vue
- Kafka簡單入門Kafka
- Mysql 簡單入門MySql
- git簡單入門Git
- Espresso 簡單入門Espresso
- Groovy 簡單入門
- drools的簡單入門案例
- 簡單的 Go 入門教程Go
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- oracle 註釋和約束Oracle
- 新增/刪除約束(Oracle)Oracle
- oracle 約束的novalidate 應用Oracle
- 無約束優化方法讀書筆記—入門篇優化筆記
- Oracle主鍵約束、唯一鍵約束、唯一索引的區別(轉)Oracle索引