導航:首頁 > 編程大全 > 資料庫完整性約束的添加刪除

資料庫完整性約束的添加刪除

發布時間:2023-12-21 05:15:54

『壹』 資料庫中 什麼是數據完整性

3.1 SQL 中的完整性約束

SQL把各種完整性約束作為資料庫模式定義的一部分。既有效防止了對資料庫的意外破壞,提高了完整性檢測的效率,又可以減輕編程人員的負擔。

SQL對三種不同完整性約束的設置及檢測,採取了不同的方式加以實現。下面分別介紹。

3.1.1 實體完整性和主碼

實體完整性規定,主碼的任何屬性都不能為空,因為,概念模型中實體和聯系都是可區分的,而且它們以碼為唯一性標識。如果,主碼的屬性值可以為空,則意味著在概念模型中存在著不以碼為唯一性標識的實體。這顯然是前後矛盾的。

那麼怎樣保證實體完整性呢?SQL中實體完整性是通過主碼來實現的。一旦某個屬性或屬性組被定義為主碼,該主碼的每個屬性就不能為空值,並且在關系中不能出現主碼值完全相同的兩個元組。

主碼的定義是在Create Table 語句中使用 Primary Key關鍵字來實現的。方法有兩種:

a) 在屬性定義後加上關鍵字 Primary Key;

b) 在屬性表定義後加上額外的定義主碼的子句:Primary Key(<主碼屬性名表>)

說明:

�0�5 如果主碼僅由一個屬性組成,上述兩種方法都可定義,若由兩個或以上的屬性組成,則只能用上述第二種方法定義了。

�0�5 對於候選碼的說明方法,可以用Unique說明該屬性的值不能重復出現。Unique的使用與Primary Key相似。

�0�5 一個表中只能有一個主碼定義,但可以有多個Unique說明。

�0�5 SQL中,並沒有強制為每個關系指定主碼,但為每個關系指定主碼通常會更好一些。(因為主碼的指定可以確保關系的實體完整性)

3.1.2 參照完整性約束與外部碼

參照完整性是對關系間引用數據的一種限制。即:若屬性組A是基本關系R1的外碼,它與基本關系R2的主碼K相對應,則R1中每個元組在A上的值必須:要麼取空值,要麼等於R2中某元組的主碼值。

一、外部碼約束的說明:

SQL中就是利用外部碼的說明來實現參照完整性約束,限製表中某些屬性的取值的。外部碼的說明也有兩種方法:

1、在該屬性的說明後直接加上關鍵字」REFERENCES <表名>(<屬性名>)」,其中表名稱為參照關系名,屬性名稱為參照關系的主碼。

2、在Create Table 語句的屬性清單後,加上外部碼說明子句,格式為:

FOREIGN KEY <屬性名表1> REFERENCES <表名>(<屬性名表2>)

上式中的屬性名表1和屬性名表2中屬性可以多於一個,但必須前後對應。

二、參照完整性約束的實現策略

前面講了,外部碼的取值只有兩種情況:要麼取空,要麼取參照關系中的主碼值。可是當用戶操作違反了這個規則時,如何保持此約束呢?

SQL提供了三種可選方案:

1、RESTRICT(限制策略):

當用戶對表進行違反了上述完整性約束、條件的插入、刪除或修改操作時,將會被系統拒絕。

2、CASCADE(級聯策略):

當對參照關系進行刪除和修改時,SQL所提供的一種方案。在這種策略下,當刪除或修改參照關系中某元組的主碼值時,被參照關系中,那些外部碼具有該值的元組也將被刪除或修改,以保證參照完整性。

3、SET NULL(置空策略):

置空策略也是針對參照關系的刪除或修改操作的。在這種策略下,當刪除參照關系中的某一元組或修改某一元組的主碼值時,被參照關系中外碼值等於該主碼值的元組在該外碼上的值將被置空

說明:

當用戶不指定參照完整性的實現策略時,一般被默認為RESTRICT(限制策略)。實現策略的說明通常被加在外部碼的說明後面,格式為:ON DELETE SET NULL ON UPDATE CASCADE。

3.1.3 用戶自定義完整性約束

對於用戶自定義完整性約束,SQL提供了非空約束、對屬性的CHECK約束、對元組的CHECK約束、觸發器等來實現用戶的各種完整性要求。

1、非空約束:

在CRETE TABLE 中的屬性定義後面加上NOT NULL關鍵字即定義了該屬性不能取空值。

2、基於屬性的CHECK約束

使用CHECK(檢查)子句可保證屬性值滿足某些前提條件。其一般格式為:

CHECK(<條件>)

它既可跟在屬性定義的後面,也可在定義語句中另增一子句加以說明。

如:CHECK(age>=18 AND age<=65);

CHECK(sex IN (「男」,」女」));

CHECK(dno IN(select dno from department));

從上例中可以看出,CHECK子句的條件中還可以帶子查詢。

3、基於元組的CHECK約束

基於元組的CHECK約束往往要涉及到表中的多個域。所以它是元組約束。在對整個元組完成插入或對某一元組的修改完成之後,系統將自動檢查是否符合CHECK條件表達式。若不符合條件,系統將拒絕該插入或修改操作。

基於元組CHECK約束的說明方法是在CREATE TABLE語句中的屬性表、主碼、外部碼的說明之後加上CHECK子句。

3.1.4 約束的更新

約束與資料庫中的表和視圖一樣,可以進行增、刪、改的更新操作。為了改和刪約束,需要在定義約束時對其進行命名,在各種約束的說明前加上關鍵字CONSTRAINT 和該約束的名稱即可。

例如:在employee表的create table語句中:

eno char(4) CONSTRAINT PK_employee PRIMARY KEY,

dno char(4)CONSTRAINT FK_employee FOREIGN KEY REFERENCES department(dno);

當對各種約束進行命名後,就可以用ALTER TABLE語句來更新與屬性或表有關的各種約束。如:

ALTER TABLE employee DROP CONSTRAINT FK_employee;

ALER TABLE Salary ADD CONSTRAINT RightSalary CHECK(Insure+Fund<Rest);

上述的增加約束,實際上也是通過ALTER TABLE語句定義約束的一種形式。

SQL不能直接修改約束,修改某一個約束實際上是用ALTER TABLE 語句先刪除該約束,然後再增加一個與該約束同名的新約束。

『貳』 資料庫中怎樣刪除約束

資料庫中刪除約束的方法:
1、sql
server中刪除約束的語句是:
alter
table
表名
drop
constraint
約束名
sp_helpconstraint
表名
找到數據表中的所有列的約束
2、oracle中刪除約束的語句:
先找到表的約束名稱,執行:
select
*
from
user_constraints;
其中
CONSTRAINT_NAME
為表的約束名稱
然後刪除約束:
alter
table
表名
drop
constraint
約束名
cascade;
3、mysql中刪除約束的語句是:
1)刪除主鍵約束:
alter
table
表名
drop
primary
key;
2)刪除外鍵約束:alter
table
表名
drop
foreign
key
外鍵(區分大小寫);

『叄』 資料庫的完整性包含哪些完整性約束

數據完整性約束指的是為了防止不符合規范的數據進入資料庫,在用戶對數據進行插入、修改、刪除等操作時,DBMS自動按照一定的約束條件對數據進行監測,使不符合規范的數據不能進入資料庫,以確保資料庫中存儲的數據正確、有效、相容。

資料庫的完整性約束包含以下類型:

1)與表有關的約束:是表中念或銷定義的一種約束。可在仔游列定義時定義該約束,此時稱為列約束,也可以在表定義時定義約束,此時稱為表約束。

2)域(Domain)約束:在域定義中被定義的一種約束,它與在特定域中定義的任何列都有關系。

3)斷言(Assertion):在斷言定義時定義的一種約束,它可以與一個或多個表進行關聯。

(3)資料庫完整性約束的添加刪除擴展閱讀:

數據的完整性

分為以下四類:

1)實體完整性:規定表的每一行在表中是惟一的實體。

2)域完整性:是指表中的列必須滿足某種特定的團棚數據類型約束,其中約束又包括取值范圍、精度等規定。

3)參照完整性:是指兩個表的主關鍵字和外關鍵字的數據應一致,保證了表之間的數據的一致性,防止了數據丟失或無意義的數據在資料庫中擴散。

4)用戶定義的完整性:不同的關系資料庫系統根據其應用環境的不同,往往還需要一些特殊的約束條件。用戶定義的完整性即是針對某個特定關系資料庫的約束條件,它反映某一具體應用必須滿足的語義要求。

閱讀全文

與資料庫完整性約束的添加刪除相關的資料

熱點內容
數控六角怎麼編程 瀏覽:784
db2資料庫windows 瀏覽:670
文件信息管理術語英 瀏覽:119
編程前端筆試過不了怎麼辦 瀏覽:293
會計雲課堂電腦版app怎麼下載 瀏覽:741
win10關閉側滑 瀏覽:333
焊接電路板工具有哪些 瀏覽:867
文件名通符有什麼用 瀏覽:954
純真ip資料庫怎麼用 瀏覽:376
計算機如何進行簡單編程 瀏覽:944
金山文檔怎麼導出excel文件圖片 瀏覽:772
武漢微信群大全 瀏覽:592
手機數據存儲是什麼意思 瀏覽:491
蘋果6系列產品 瀏覽:121
恆生離職要簽署什麼文件 瀏覽:444
js裡面使用php變數 瀏覽:917
ios9刪除自帶程序app 瀏覽:430
寶馬x5大燈怎麼編程 瀏覽:261
怎麼在電腦連接路由器怎麼設置密碼 瀏覽:67
地球形成多少年精確數據 瀏覽:76

友情鏈接