天天看點

Oracle資料庫之限制

限制

資料的完整性用于確定資料庫資料遵從一定的商業和邏輯規則。在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