約束
資料的完整性用於確保資料庫資料遵從一定的商業和邏輯規則。在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,
*** char(2) default '男' check(*** 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 tablegoodsmodifygoodsnamenot null;
(3)增加身份證也不能重複
sql> alter table purchase modify nums unique;
(4)增加客戶住址只能是海定,朝陽,東城,西城,通州,崇文!
sql>alter tablecustomeradd constraintcustomeradd 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
oracle資料庫之約束
一 非空約束 1 在建立表時設定非空約束 在資料型別後面加上 not null create table tablename username varchar2 20 not null,2 在修改表時新增非空約束 其實也就是修改欄位的定義,但是需要表中沒有資料 確切的說是要新增非空約束的列沒有非空資...
mysql資料庫之約束
約束是一種限制,它通過對錶的行或列的資料做出限制,來確保標的資料完整性 唯一性。1 非空約束 not null 欄位的值不能為空 1.1 建立表時新增非空約束 1.2 修改表時新增非空約束 1.3 刪除非空約束 2 唯一約束 unique 要求該列唯一,允許為空,唯一約束可以確保一列或者幾列不出現重...
資料庫之約束關係
包括5種型別 1 檢查約束 通過在定義資料庫表裡,在字段級或者是在表級加入的檢查約束,使其滿足特定的要求。比如以下的表定義 crate table student id serial,name varchar 10 scrore integer check scrore 0 定義分數不能小於0。也可...