《西華大學(xué)數(shù)據(jù)庫實驗報告(四)》由會員分享,可在線閱讀,更多相關(guān)《西華大學(xué)數(shù)據(jù)庫實驗報告(四)(6頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、第4次作業(yè)
——數(shù)據(jù)完整性約束
一、環(huán)境
運行SQL Server,已創(chuàng)建名為student數(shù)據(jù)庫、“學(xué)生信息”表、“課程”表、“學(xué)生成績”表。(參考作業(yè)二)
二、實訓(xùn)內(nèi)容
(1)在“學(xué)生信息”表上添加主鍵約束。最后刪除主鍵約束。
use student
go
alter table 學(xué)生信息_蒲強林
add constraint PK_學(xué)生信息_學(xué)號 primary key(學(xué)號)
go
運行結(jié)果截圖:
use student
go
alter table 學(xué)生信息_蒲強林
drop constraint PK_學(xué)生信息_學(xué)號
go
運行結(jié)果截圖:
2、
(2)在“學(xué)生信息”表中添加“身份證號碼”字段,對該字段定義唯一鍵約束(插入幾行記錄看效果)。最后刪除唯一鍵約束。
use student
go
alter table 學(xué)生信息_蒲強林
add 身份證號碼 nchar(18) unique
go
運行結(jié)果截圖:
use student
go
insert 學(xué)生信息_蒲強林
values (001,張三,男,18,計算機系,18288888888,5113211993)
insert 學(xué)生信息_蒲強林
values (002,李四,男,19,數(shù)學(xué)系,18200000008,5113211993)
go
運行結(jié)果
3、截圖:
再次插入身份證號碼為“5113211993”的學(xué)生信息時,出現(xiàn)唯一鍵沖突。
use student
go
alter table 學(xué)生信息_蒲強林
drop constraint UQ__學(xué)生信息_蒲強林__882AE7177D582703
go
運行結(jié)果截圖:
(3)對“學(xué)生信息”表中的“年齡”定義檢查約束,要求年齡在18-25之間,但對已有不符合約束的數(shù)據(jù)不進行檢查(插入幾行記錄看效果)。
use student
go
alter table 學(xué)生信息_蒲強林
with nocheck
add constraint CK_學(xué)生信息_年齡 chec
4、k(年齡 between 18 and 20)
go
運行結(jié)果截圖:
use student
go
insert 學(xué)生信息_蒲強林
values (001,張三,男,11,計算機系,18288888888,5113211993)
insert 學(xué)生信息_蒲強林
values (002,李四,男,19,數(shù)學(xué)系,18200000008,5113211889)
go
運行結(jié)果截圖:
當添加不滿足檢查約束的 學(xué)生信息時,發(fā)生沖突。
(4)在“學(xué)生成績”表中的“分數(shù)”字段定義檢查約束,讓分數(shù)范圍在0-100之間(插入幾行記錄看效果)。最后刪除檢查約束。
use stu
5、dent
go
alter table 學(xué)生成績_蒲強林
with nocheck
add constraint CK_學(xué)生成績_分數(shù) check(分數(shù) between 0 and 100)
go
運行結(jié)果截圖:
use student
go
insert 學(xué)生成績_蒲強林
values (3120081,101,86)
insert 學(xué)生成績_蒲強林
values (3120081,102,155)
go
運行結(jié)果截圖:
當添加不滿足檢查約束的學(xué)生成績時,發(fā)生沖突。
use student
go
alter table 學(xué)生成績_蒲強林
dro
6、p CK_學(xué)生成績_分數(shù)
go
(5)對“學(xué)生信息”表中的“性別”定義默認約束(插入幾行記錄看效果)。
use student
go
alter table 學(xué)生信息_蒲強林
add constraint DF_學(xué)生信息_性別 default 男 for 性別
go
運行結(jié)果截圖:
use student
go
insert 學(xué)生信息_蒲強林
values (3,王五,default,18,計算機系,1821111118,5333211993)
insert 學(xué)生信息_蒲強林
values (4,李三,default,19,數(shù)學(xué)系,18200000008,44
7、13211993)
go
運行結(jié)果截圖:
(6)在“學(xué)生成績”表中為“課程號”字段建立一個帶有級聯(lián)更新功能的外鍵,其主鍵是“課程”表的“課程號”字段,當更新“課程”表中的“課程號”時,同時更新“學(xué)生成績”表中的“課程號”數(shù)據(jù)(修改幾行記錄看效果)。
use student
go
alter table 學(xué)生成績_蒲強林
add constraint FK_學(xué)生成績_學(xué)號 foreign key(課程號)
references 學(xué)生課程_蒲強林(課程號) on update cascade
go
運行結(jié)果截圖:
use student
go
select *
8、
from 學(xué)生成績_蒲強林
go
update 學(xué)生課程_蒲強林
set 課程號 = 0001
where 課程號 = 0000001
go
select *
from 學(xué)生成績_蒲強林
go
運行結(jié)果截圖:
(7)在“學(xué)生成績”表中為“課程號”字段建立一個帶有級聯(lián)刪除功能的外鍵,其主鍵是“課程”表的“課程號”字段,當刪除“課程”表中的某一行記錄時,同時刪除 “學(xué)生成績”表所有這門課程的成績數(shù)據(jù)(刪除幾行記錄看效果)。
use student
go
alter table 學(xué)生成績_蒲強林
add constraint FK_學(xué)生成績_課程號1 foreig
9、n key(課程號)
references 學(xué)生課程_蒲強林(課程號) on delete cascade
go
運行結(jié)果截圖:
use student
go
select *
from 學(xué)生成績_蒲強林
go
delete 學(xué)生課程_蒲強林
where 課程號 = 0001 or 課程號 = 0000002 or 課程號 = 0000003 or 課程號 = 0000004
go
select *
from 學(xué)生成績_蒲強林
go
運行結(jié)果截圖:
二、作業(yè)小結(jié)
總結(jié)建立數(shù)據(jù)完整性的方法和步驟。掌握并理解如何使用約束、默認、規(guī)則完成數(shù)據(jù)完整性的建立。體會數(shù)據(jù)完整性的作用和地位。