關於oracle資料庫維護資料的完整性 約束

2021-07-24 10:28:22 字數 2730 閱讀 9892

首先是五個約束關鍵字:

1.primary key(主鍵約束):唯一標識資料庫表中的每條記錄,每個表中有且只有乙個主鍵,且不能為null,它可以包含表中的乙個或多個字段(復合主鍵)

2.unique(唯一約束):唯一標識資料庫表中的每條記錄,每個表中可以有多個unique,可以為null

3.foreign key(外來鍵約束):乙個表中的 foreign key 指向另乙個表中的 primary key

4.check(條件約束):約束用於限制列中的值的範圍

5.not null(非空約束):約束強制列不接受 null 值

下面用乙個小的案例來演示他們的用法:

商品goods(商品號goodsid,商品名 goodsname,單價 unitprice,商品類別category,**商provider);

客戶customer(客戶號customerid,姓名name,住在address,電郵email,性別***,身份證cardid);

購買purchase(客戶號customerid,商品號goodsid,購買數量nums);

必須包含下面的約束:

(1). 每個表的主外來鍵;

(2). 客戶的姓名不能為空值;

(3). 單價必須大於0,購買數量必須在1到30之間;

(4). 電郵不能夠重複;

(5). 客戶的性別必須是 男 或者 女,預設是男;

/*商品goods(商品號goodsid,商品名 goodsname,單價 unitprice,商品類別category,**商provider); */

create table goods(

goodsid char(8) primary key,--主鍵約束

goodsname varchar2(40) ,

unitprice number(10,2) check(unitprice>0),--check約束

categories varchar2(40),

provider varchar2(40)

);/*客戶customer(客戶號customerid,姓名name,住在address,電郵email,性別***,身份證cardid);*/

create table customers(

customerid char(8)primary key,--主鍵約束

customername varchar2(20) not null,--不為空約束

address varchar2(80),

email varchar2(40) unique,--unique約束

*** char(4) default '男' check(*** in ('男','女')) ,--check約束

cardid char(18)

);

/*購買purchase(客戶號customerid,商品號goodsid,購買數量nums);*/

create table purchase(

customerid references customers(customerid),--外來鍵約束

goodsid references goods(goodsid),--外來鍵約束

nums number check(nums between 1 and 30)--check約束

);

此時出現了新的需求:(修改約束) 

(1) 增加商品名也不能為空

alter table goods modify goodsname not null;--如果要刪除not null約束 只需要把not null改為null

alter table goods modify goodsname null;

(2) 增加身份證也不能重複

alter table customer add constraint add_unique unique(cardid);--add_unique 只是為這個新增約束設定的乙個名字

/*如果要刪除這個約束*/

alter table customer drop constraint add_unique;

(3) 增加客戶的住址只能是』海淀』,』朝陽』

alter table customers add constraint add_check check(address in('海淀','朝陽'));
當你想要刪除帶有主外來鍵約束的表時:

1.在drop table [表名] 後面加上cascade constraint

drop table customers cascade constraint;
2.先刪除表的主外來鍵約束,再進行表的刪除

alter table customers drop primary key cascade;
3.先刪除子表再刪除主表

mysql資料庫維護 維護MySQL資料庫表

在本教程中,我們將向您介紹一些非常有用的語句,使您可以在mysql中維護資料庫表。mysql提供了幾個有用的語句,可以有效地維護資料庫表。這些語句使您能夠分析,優化,檢查和修復資料庫表。分析表語句 mysql查詢優化器是mysql伺服器的重要組成部分,為查詢建立了乙個最佳的查詢執行計畫。對於特定查詢...

Oracle 資料庫日常維護 1

七 資料庫壞塊的處理 當 oracle資料庫出現壞塊時,oracle會在警告日誌檔案 alert sid.log 中記錄壞塊的資訊 ora 01578 oracle data block corrupted file 7,block ora 01110 data file oracle1 orada...

oracle資料庫維護常用操作

檢視資料庫裡面所有使用者,前提是你是有dba許可權的帳號,如sys,system select from dba users 檢視你能管理的所有使用者!select from all users 檢視當前使用者資訊 select from user users 查詢你 當前使用者下,有哪些表 sel...