Oracle 約束的定義
約束用於確保資料庫滿足特定的商業邏輯或者企業規劃
-----------------------------------------------------------------------
約束包括:not null 、unique、primarykey、foreign key、check
not null約束 用於確保列不能為空(插入資料必須為該列提供資料 update操作不能將該列值設為null)例:建立i_top表 並在top_r,name 列上定義not null約束 並且指定name列上的not null約束名為nn_name
create table i_top(i_es not null,
name varchar2(10) constraint nn_name not null,
i_dd number(6,2)
);
/*注如果指定約束名那麼必須指定constraint選項,
如果不指定約束名那麼Oracle會自動生成為sys_Cnnn的約束名*/
unique約束 用於唯一的標識列的資料(唯一列數的列值不能重複可以為空)
當定義唯一約束時,預設情況下Oracle會自動基於唯一約束列建立唯一索引,索引名與約束名完全一致
例:建立i_top表,並在name列上定義unique約束
create table i_top(
i_id int,name varchar2(10),i_ee number(6,2),
constraint u_name unique(name) --指定unique約束名為u_name
);
primary key 約束用於唯一地標識錶行的資料(主鍵約束列不僅不能重複並且也不能為null)
例:建立i_top表中並在i_id列上定義primary key約束
create table i_top(
i_id int primary key,
name varcher2(10)
);
foreign key約束 用於定義主從表的關係 (外部鍵約束要定義在從表上,但主表必須具有主鍵約束或者唯一約束,
當定義了外來鍵約束之後,要求外部鍵列的資料必須是主表的主鍵列<或唯一列>中存在,或者為null)
<定義外部鍵約束關鍵字:
foreign key:用於指定在表級定義外部鍵約束
references:用於指定主表名及其主鍵列
on delete cascade:用於指定級聯刪除選項
on delete set null:用於指定轉換相關外部鍵值為null>
例:建立i_top表,並在表i_tops和i_top之間定義主從關係
create table i_top(
i_id int,
name varchar2(10),
edon int constraint fk_edon references i_tops(edon)
);
check 約束用於強制錶行資料必須滿足的條件
例:建立i_top表 並在top_s列上定義check約束
create table i_top(i_id int,name varcher2(10),i_top number(6,2),
check(i_top between 1000 and 5000)) --i_top列的值只能在1000到5000之間
定義複合約束:
例:建立ite表並在ite_id和ore_id列定義主鍵約束
create table ite(
ore_id number(3),
ite_id number(3),
name varcher2(20),
primary key(ore_id,ite_id)
);
--------------------------------------------------------------------------------------------------