T SQL學習之路之資料庫完整性之參照完整性

2021-07-06 09:45:05 字數 1951 閱讀 5310

表的一列或幾列的組合的值在表中唯一地指定一行記錄,擇這樣的一列或多列的組合作為主鍵可實現表的實體完整性,通過定義

primary key約束來建立主鍵。

外來鍵約束定義了表與表之間的關係,通過將乙個表中一列或多列新增到另乙個表中,建立兩個表之間的連線,這個列就成為第二個表的外來鍵,通過定義

foreign key約束來建立外來鍵。

使用primary key約束或

unique約束來定義主表主鍵或唯一鍵,

foreign key約束來定義從表外來鍵,可實現主表與從表之間的參照完整性。

定義表間參照關係的步驟是先定義主表主鍵(或唯一鍵),再定義從表外來鍵。

語法格式:

create table table_name

(  column_name datatype

[ constraint constraint_name ]

[ foreign key ][ ( column [ ,...n ] )]

references referenced_table_name [ ( ref_column [ ,...n ] ) ]

[ on delete ]

[ on update ]

[ not for replication ]

)

說明: 

● foreign key定義的外來鍵應與引數referenced_table_name指定的主表中的主鍵或唯一鍵對應。

● on delete|on update可為外來鍵定義以下參照動作:

cascade:從父表刪除或更新行時自動刪除或更新行子表中匹配的行

例如,建立stu表,其中stno列作為外來鍵,與已建立的以stno列作為主鍵student表建立表間參照關係:

use stsc

create table stu

(  stno char(4)not null references student(stno),

stname char(8) not null,

stbirthday date null

)

語法格式:

alter table table_name     

add   [ constraint constraint_name] 

[ foreign key ][ ( column [ ,...n ] )]

references referenced_table_name [ ( ref_column [ ,...n ] ) ]

[ on delete ]

[ on update { no action

例如:修改scst資料庫中score表的定義,將它的「課程號」列定義為外來鍵,假設course表的「課程號」列已定義為主鍵。

alter table score

add constraint fk_score_course foreign key(cno)

references course(cno)

語法格式:

alter table table_name     

drop constraint constraint_name [,…n]

例如:刪除以上對score課程號列定義的fk_score_course外來鍵約束。

alter table score

drop constraint fk_score_course

------------------------------提         示 --------------------------

要多去練手,不要在這兒說這麼多, 不然,一切都是瞎扯。

資料庫完整性

完整性約束條件 實體完整性給出了主鍵的取值的最低約束條件 規則是 主鍵的各個屬性都不能為空。參照完整性給出了在關係之間建立正確的聯絡的約束條件 規則是 外來鍵或者取空值 此時要求外來鍵的各個屬性均為空值 或者等於被參照關係中的主鍵的某個值。使用者自定義完整性 關係數控應用系統中的關係往往還應該滿足一...

資料庫完整性

資料的完整性和安全性 資料庫的完整性和安全性是兩個既有聯絡又不盡相同的概念。資料的完整性是為了防止資料庫中存在不符合語義的資料,也就是防止資料庫中存在不正確的資料。資料的安全性是保護資料庫防止惡意破壞和非法訪問。完整性檢查和控制的防範物件是不合語義的 不正確的資料,防止它們進入資料庫。安全性控制的方...

資料庫 完整性

一 實驗目的 1 掌握資料庫約束的概念 2 熟悉sql server 的完整性約束技術。3 了解sql server 的違反完整性處理措施。二 實驗環境 sql server2014 三 實驗內容 1.在前幾次實驗所使用的資料庫中新建乙個教師資訊表,表名為teacher,字段包括tno 教師編號 t...