資料庫實驗五 完整性

2021-08-21 06:26:06 字數 3789 閱讀 2563

一、實驗目的:

1、掌握資料庫約束的概念;

2、熟悉

sql server

的完整性約束技術。

3、了解

sql server

的違反完整性處理措施。

二、實驗環境:

windows下的sql

三、實驗內容:

1.在前幾次實驗所使用的資料庫中新建乙個教師資訊表,表名為

teacher

,字段包括

tno(

教師編號),

tname(姓名)

,t***(性別)

,ttitle(職稱)

,完整性包括:設定

tno為主鍵,

tname

非空,t***

的取值範圍為「男

」或「女

」。create

tableteacher(

tno char

(9)primary

key,

tname char

(20)

notnull,

t*** char

(2)constraint c3 check

(t*** in('

男','女'

)),ttitle char

(20)

);2.

用insert

語句插入如下記錄,觀察實驗結果:

insert into teacher values('2016001','

王明','

男','

講師')

成功insert into teacher values('2016001','

王英','

女','

助教')

違反了 primary key 約束「pk__teacher__c450026d7af6bc5d」。不能在物件「dbo.teacher」中插入重複鍵。重複鍵值為 (2016001  )。

insert into teacher values('2016002','

張方','a','

講師')

insert 語句與 check 約束"c3"衝突。該衝突發生於資料庫"master",表"dbo.teacher",column 't***'。

性別只能是男或女。

對teacher

表增加乙個約束,

ttitle

屬性的取值範圍為('助教

','講師

','副教授

','教授

'),並插入一條記錄:

alter

table teacher

addconstraint c1 check

(ttitle in(

'助教','

講師',

'副教授','

教授'));

insert into teacher values('2016003','

劉陽','

男','

研究員')

,觀察實驗結果。

insert 語句與 check 約束"c1"衝突。該衝突發生於資料庫"master",表"dbo.teacher",column 'ttitle'。

為學生表

student

增加乙個約束,

s***

的取值範圍為「男

」或「女

」。alter

table student

addconstraint s1 check

(s*** in('男'

,'女'));

為選課表

sc增加乙個約束,

grade

的取值在0至

100之間。

alter

table sc

addconstraint sc1 check

(grade between 0 and 100);

(提示,

3,4,5

是對錶的結構增加約束定義,使用命令為:

altertable

)為選課表

sc增加參照完整性及違約處理,定義

sno為外來鍵,與

student

表中的sno

關聯,當刪除、更新

student

中的元組時,級聯刪除、更新

sc表中的相應元組,命令為:

alter table sc

add foreign key(sno) references student(sno)

on delete cascade

on update cascade

使用sql

語句,將

student

表中姓名為」王敏

」的元組,學號更改為

「201315123」

,然後檢視

sc表中的元組是否也做了相應的更改。

是。為選課表

sc增加參照完整性及違約處理,定義

cno為外來鍵,與

course

表中的cno

關聯,當刪除、更新

course

中的元組時,級聯刪除、更新

sc表中的相應元組,並進行驗證。

alter

table sc

addforeign

key(cno)

references course(cno)

ondelete

cascade

onupdate

cascade

是。8.

建立乙個觸發器,當向

sc表中新增資料時,如果新增的資料與

student

表中的資料不匹配(沒有對應的學號),則將此資料刪除。

create trigger sc_t onsc for insert

asbegin

declare @bh char(5)

select @bh=inserted.sno from inserted

if not exists (select sno from student where student.sno=@bh)

delete from sc where sno=@bh

end9.

建立乙個修改觸發器,當

student

表中的sno

資訊修改時,自動將

sc表中的相應資訊也修改。

(簡單要求:修改僅為一條記錄)

(注:8,9

的操作使用

createtrigger

命令,觸發器建立成功後,自己使用

insert

語句,或者

update

語句進行驗證,驗證完畢,可以將觸發器刪除)

create trigger student_t on student for update

asbegin

declare @bh char(9)

declare @ah char(9)

select@bh=inserted.sno from inserted

select @ah=deleted.snofrom deleted

if exists (select snofrom sc where sc.sno=@ah)

update sc setsno=@bh where sno=@ah;

end10.

用觸發器實現教材例題

5.21,5.22

的功能。

實驗五 資料庫完整性

實驗五 資料庫完整性 實驗目的 1 掌握實體完整性約束 參照完整性約束 2 靈活應用自定義完整性約束 3 了解觸發器在自定義完整性中的應用 實驗內容 一 定義乙個教師表teacher tno,tname,t tage,tsal,tjob,tdept 要求 1 性別只能是 男 或 女 2 tno為主碼...

資料庫五(資料庫完整性)

一 實體完整性 實體完整性規則 主屬性不能取空值 關係模型中 primary key 單屬性碼可以定義為列級約束條件或者表級約束條件 多屬性碼則只能定義為表級約束條件 實體完整性檢查和違約處理 檢查主碼是否唯一,不唯一則拒絕插入或者修改 檢查主碼各屬性是否為空,只要有乙個為空就拒絕插入 修改 二 參...

資料庫完整性

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