Oracle資料庫之約束

2021-09-20 02:15:15 字數 2858 閱讀 4551

約束

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