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