限制
資料的完整性用于確定資料庫資料遵從一定的商業和邏輯規則。在Oracle中,資料完整性可以使用限制、觸發器、應用程式(過程、函數)三種實作。而限制易于維護并且性能最好,是以作為維護資料完整性的首選。
限制包括五種:
not null(不為空) unique(唯一)
primary key(主鍵) foreign key外鍵
check(檢查) 五種。
not null(非空)
如果再列上定義了not null ,那麼當插入資料時,必須為列提供資料
unique:
當定義了唯一限制後,該列值是不能重複的,但是可以為null
primary key:
用于唯一的标示表行的資料,當定義主鍵限制後,該列不但不能重複而且不能為null【一張表最多隻能有一個主鍵,但是可以有多個unique限制】
foreign key:
用于定義主表和從表之間的關系。外鍵限制要定義在從表上,主表則必須具有主鍵限制或是unique限制,當定義外鍵限制後,要求外鍵列資料必須在主表的主鍵列存在或是null
check:
用于強制行資料必須滿足的條件,假定在sal列上定義了check限制,并要求列值在100~200之間如果不在此範圍就會提示出錯!
例子:
SQL> create table goods(goodsId char(8) primary key ,goodsName varchar2(30),unitprice number(10,2) check(unitprice >0),category varchar(8),provider varchar2(40));
SQL> create table customer(customerId char(20) primary key,
name varchar2(30) not null,--非空
address varchar2(50),
email varchar2(40) unique,
sex char(2) default '男' check(sex in ('男','女')),
cardId char(18)
);
SQL> create table purchase(customerId char(8) references customer(customerId),
goodsId char(8) references goods(goodsid),
nums number(10) check(nums between 1 and 30));
圖2
(2增加商品名不為空
SQL> alter table
goods modify goodsName not null;
(3)增加身份證也不能重複
SQL> alter table purchase modify nums unique;
(4)增加客戶住址隻能是海定,朝陽,東城,西城,通州,崇文!
SQL> alter table customer add constraint
customerAdd varchar2(40)check(customerAdd in('海定','崇明','朝陽','東城','西城','通州'));
删除限制:
當不再需要某個限制時,可以删除。
alter table 表明 drop constraint 名稱;
在删除主鍵限制的時候,可能有錯誤,比如alter table 表明 drop primary key ;這是因為在倆張表存在主從關系,那麼删除主表的主鍵限制時,必須帶上cascade選項;
alter table 表明 drop primary key cascade;
顯示限制資訊:
1.顯示限制資訊
通過查資料字典視圖user_constraints,可以顯示目前使用者所有的限制資訊。
select constraints_name ,constraint_type,status , validated from user_constraints where table_name="表明";
2.顯示限制列
查詢資料字典user_cons_columns,可以顯示限制所對應的表列資訊
select column_name ,position from user_cons_columns where constraint_name="限制名";
圖3