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