《數(shù)據(jù)庫(kù)系統(tǒng)》上機(jī)題,實(shí)驗(yàn)四:T
《《數(shù)據(jù)庫(kù)系統(tǒng)》上機(jī)題,實(shí)驗(yàn)四:T》由會(huì)員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫(kù)系統(tǒng)》上機(jī)題,實(shí)驗(yàn)四:T(20頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、實(shí)驗(yàn)四:T-SQL查詢、存儲(chǔ)過(guò)程、觸發(fā)器、完整性 姓名:張浩 學(xué)號(hào):20082617 專業(yè):信息管理與信息系統(tǒng) 班級(jí):1 課程名稱:數(shù)據(jù)庫(kù)系統(tǒng)概論 課程代碼: 實(shí)驗(yàn)時(shí)間:2010年12月24日,2010年12月18日 實(shí)驗(yàn)地點(diǎn):12號(hào)樓406室 1. 實(shí)驗(yàn)特點(diǎn): 類型:驗(yàn)證 類別:專業(yè)基礎(chǔ) 計(jì)劃學(xué)時(shí):4學(xué)時(shí) 每組人數(shù):1人 2. 實(shí)驗(yàn)?zāi)康呐c要求: 實(shí)驗(yàn)?zāi)康模? 1) 熟練掌握局部變量、游標(biāo)的定義和使用 2) 熟練掌握存儲(chǔ)過(guò)程、觸發(fā)器的創(chuàng)建和使用 3 )掌握數(shù)據(jù)庫(kù)完整性約束的定義和使用 基本要求: 1)掌握上述過(guò)程定義的一般格式 3. 主要儀器設(shè)備:計(jì)算機(jī)+SQL S
2、erver 2000 第一部分:T-SQL程序設(shè)計(jì) (1 ).如果3號(hào)課程的平均成績(jī)?cè)?80分以上,則輸岀“ 3號(hào)課程成績(jī)良好”,否則輸岀“ 3號(hào)成績(jī) 一般” if (select avg(grade) from sc where eno='3')>80 begin print '3 號(hào)成績(jī)良好’ end else begin print '3 號(hào)成績(jī)一般’ if Select -wg (grade) from sc where cna-5 : 80 begm print V號(hào)成績(jī)良奸° end JP妙煩氓ST I. 翌網(wǎng)格aS消息 end 汁- :yr .
3、 「“I,” 蘭亠: 1 l . ,提示信息 (2 )計(jì)算并輸岀 95003 號(hào)學(xué)生的平均成績(jī),若無(wú)該生信息,則顯示“該生未選課” declare @message varchar(200) if exists(select sno from sc where sc.s no='95003') beg in select avg(grade) from sc where sc.s no='95003' end pri nt @message end declare Message varchar f200) a if ezists select sno frtym ^here
4、sc. begin sele匚七 av? \ grade) froiiL sc where else begin s&t Message '該生未選諜' print ?message end v < " i >r < 亠 Ilin □網(wǎng)格HP消息 GH4張浩20092&171 0 00:00 □行 行陽(yáng)列訊 (3 ).如果有成績(jī)?cè)?90分以上的學(xué)生,則顯示他的學(xué)號(hào),課程和成績(jī),否則顯示“沒(méi)有學(xué)生的課程成績(jī) 在 90 分以上”提示信息 declare @msg varchar(200) if exists(select grade from sc where sc.grade>=9
5、0) select sno,cno ,grade from sc where sc.grade>=90 else set @msg=' 沒(méi)有學(xué)生的成績(jī)?cè)?90以上 pri nt @msg declare varchar(200' a if ex 1^1: z i select grade from sc where select sno;, cnoj grade from sc where £ else set @snsg- '沒(méi)有學(xué)生的成績(jī)?cè)?0以上’ v 1 ■■ ! > sno crto grade 1 95001 1 92 95D02
6、2 90 n冏格so消息 張浩SOOB26171 0:00:00 2 行 行「列 (4).利用游標(biāo)逐行顯示 student 表中的記錄。declare @cursorvar cursor set @cursorvar=cursor scroll dyn amic for select* from stude nt ope n @cursorvar fetch n ext from @cursorvar while @@fetch_status=O beg in fetch next from @cursorvar end close @cursorvar dealloc
7、ate @cursorvar (5).用自定義函數(shù)計(jì)算全體男生的平均年齡 CREATE FUNCTION average(@c num char(2)) RETURNS int as beg in declare @aver int select @aver=(select avg(sage) from stude nt where ssex=@c num group by ssex) retur n @aver end go declare @aver1 in t,@c num1 char(2) set @c num 仁' 男' select @av
8、er1=dbo.average (@c num1) select @aver1 as' 全體男生的平均年齡 CREATE FUNCTION averagfl (Acnun char C2)) )a.| begin declare (Saver int select Oaver- i seleut avg (sage ' ret urn ?aver end v 全體男生的平均年齡 1 ~ GIU〔張;§200&26171 0:00:00 i 行 各 11 ,列 I (6) .顯示course 表中課程名的前 2個(gè)字符。 select left(c name, 2) fro
9、m course order by eno (無(wú)列名〕 n網(wǎng)格ami 張浩2 0:00:00 (7) .在一列中顯示 student 中各元組的學(xué)號(hào)中的年級(jí),列名顯示為“年級(jí)” ;另一列中顯示學(xué)號(hào)中 的學(xué)生序列號(hào),列名顯示為“序號(hào)” 。SELECT SUBSTRINGS no, 1,2)'年級(jí)',SUBSTRINGS no, 3, LEN(s no)-1)'序號(hào) FROM stude nt ORDER BY sno SELECT SUBSTRIMG (sno, 1, 2)"年ST, SUE STR: a FROM student ORDER BY sno
10、 <.1^ i>. 年級(jí)序號(hào)] 1 95 001 2 95 002 3 95 003 4 95 004 "□岡格圜消息; 曲I加舒i張浩200826171 0:00:00 2行 行 S 列1 (8) .在選課表中顯示學(xué)號(hào)、 課程號(hào),并根據(jù)成績(jī):0-59顯示“不合格”;60-79顯示“合格” ;80-89 顯示"良好” ;90-100 顯示"優(yōu)秀?!?select sno,cno,grade= case whe n grade>=0 and grade<60 then '不合格' whe n grade>=60 an
11、d grade<80 the n ' 合格' whe n grade>=80 and grade<90 then '良好' whe n grade>=90 and grade<=100 then '優(yōu)秀' end from sc select sno, cna< grades a case when grade 0 -irid grade '50 then '下 合格’ when grade =60 遼呂 grade ?0 then J 含掐’ when grade -S0 ind ^rade 90 then 艮忙 vhen grade>=90 md grad
12、e =100 thg "優(yōu)香’ end from sc v sno eno grade 1 2 3 4 5 95001 1 0 2 950D1 3 1 2 95002 3 tisaff n網(wǎng)榕團(tuán)消息| c?H4O6^ SH4OB2T\Admtnistrator (54)張浩200026171 0:00:00 :5 存 行釦列 1 第二部分:存儲(chǔ)過(guò)程 (1 )創(chuàng)建一個(gè)為 worker表添加職工記錄的存儲(chǔ)過(guò)程 Addworker CREATE proc Addworker @ 職工號(hào) char(4), @名姓 char(8), @
13、性別 char(2), @岀生日期 datetime, @黨員否char(2), @參加工作 datetime, @部門號(hào) char (4) as in sert into worker values(@ 職工號(hào),@名姓,@性別,@岀生日期,@黨員否,@參加工作,@部門號(hào)); (2)創(chuàng)建一個(gè)存儲(chǔ)過(guò)程 Delworker 刪除worker 表中指定職工號(hào)的記錄 create proc Delworker @zhigonghao char(4) as delete from worker where 職工號(hào) =@zhig on ghao; go
14、 (3)顯示存儲(chǔ)過(guò)程 Delworker 的定義信息 (4)刪除存儲(chǔ)過(guò)程 Addworker 和Delworker 。不要截圖 drop procedure Addworker drop procedure Delworker (5 )創(chuàng)建并執(zhí)行以下存儲(chǔ)過(guò)程: a.從數(shù)據(jù)庫(kù)表中查詢,返回學(xué)生學(xué)號(hào)、姓名、課程名、成績(jī) create proc s_back as select stude nt.s no,sn ame,c name,grade from stude nt,sc,course where stude nt.s no=sc.s no and sc.c no=c
15、ourse.c no go exec s back creat e prac gb ack A as select student, sno, snane, cnane. grade from student 、scj course where student.sno=sc. sno and o=course. eno exec s_back V | < 1 > sno sname cnafte grade A | 1 95001 李勇
16、 數(shù)據(jù)庫(kù) 02 2 95001 E5 3 95001 李勇 信息系統(tǒng) E8 4 95002 劉辰 90 5 95002 信息系統(tǒng) 80 V | 13網(wǎng)格圍消息] jH406£7Udni imstrator 強(qiáng)浩 200326171 0:00:00 5行行4列i b.從數(shù)據(jù)庫(kù)表中查詢指定學(xué)號(hào)的學(xué)生學(xué)號(hào),姓名、班級(jí),該存儲(chǔ)過(guò)程接受與傳遞參數(shù),精確匹配的 值 create proc r_back @a char(10) as select sno,sn ame from stude nt where sno=@
17、a go exec r back'95003' create proc r_back a @a char(10) as select sno, sname from student whe Sxec r back' ^5003' 尸 _ v -J11L 二 Lil > i eq snaiiiE 1 *95003 王敏 *昌岡格_團(tuán)消息: (張>9200826171 0:00:00 1 行行 5,列曲 第三部分:觸發(fā)器 ⑴在表depart上創(chuàng)建一個(gè)觸發(fā)器 depart_update , 當(dāng)更改部門號(hào)時(shí)同步更改 worker表中對(duì)應(yīng) 的部門號(hào) create tri
18、gger depart_update on depart for update as update worker set 咅部門號(hào)=(select 咅部門號(hào) from inserted) where worker. 咅咅門號(hào)=(select 咅咅門號(hào) from deleted) ⑵在表worker上創(chuàng)建一個(gè)觸發(fā)器 worker_delete,當(dāng)刪除職工記錄時(shí)同步刪除 salary表中對(duì)應(yīng)的職 工記錄 create trigger worker_delete on worker for delete as delete from salary where 職工號(hào)=(select
19、 職工號(hào) from deleted) ⑶刪除觸發(fā)器depart_update drop trigger depart_update ⑷刪除觸發(fā)器worker_delete drop trigger worker_delete (5)在數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)觸發(fā)器, 向選課表添加一條紀(jì)錄時(shí),檢查該紀(jì)錄的學(xué)號(hào)在學(xué)生表中是否存在, 檢查該紀(jì)錄的課程號(hào)在課程表中是否存在,若其中有一項(xiàng)為否,則拒絕添加操作,并顯示“違反數(shù) 據(jù)一致性”提示信息。 例如:向選課表中添加一條記錄 ('95007','2',99),說(shuō)明95009不在student表中 create trigger sc_in sert
20、 on sc for in sert as declare @xuehao char(10),@keche nghao char(10),@che ngji smalli nt,@a,@b select @xuehao=s no, @keche nghao=c no from in serted set @a= select sno from stude nt where sno=@xuehao set @b= select eno from course where cno=@keche nghao if exists(@a and @b) beig n insert i
21、nto sc values(@xuehao,@keche nghao,@che ngji) end rollback transaction print' 違反數(shù)據(jù)一致性' in sert into sc values('95007','2',99) 第四部分:數(shù)據(jù)庫(kù)完整性 1、實(shí)施worker表的“性別”字段默認(rèn)值為“男”的約束 alter table worker add constraint con1 default ' 男'for 性另 V go 例如: insert worker( 職工號(hào))values(111) select * from worker 2實(shí)
22、施salary表的“工資”字段值在 0~9999的約束 create table salary (職工號(hào)char(4), 姓名 char(8), 日期 datetime, 工資 decimal not null check( 工資 >=0 and 工資 <=9999), primary key(職工號(hào),日期)) 3實(shí)施depart表的“部門號(hào)”字段值唯一的非聚集索引的約束 create table depart (部門號(hào) char(4) unique, 部門名char(10)) Go 4、為worker表建立外鍵“部門號(hào)”,參考表depart的“部門號(hào)”列。 Crea
23、te table worker (職工號(hào) char(4) primary key, 姓名 char(8), 性別 char(2), 岀生日期 datetime, 黨員否char(2), 參加工作 datetime, 部門號(hào)char(4), create rule worker_rule as @性別like '男'or @性別 go exec sp_b in drule 'worker_rule', 'worker. Go 6、 刪除1小題所建立的約束 Alter table worker drop con stra int con1 7、 刪除2小題所建立
24、的約束。 Alter table salary drop 工資 check 8、 刪除3小題所建立的約束 Alter table depart drop uni que 9、 刪除4小題所建立的約束 Alter table worker drop foreig n key 10、 解除5小題所建立的綁定并刪除規(guī)則 if exists (select n ame from sysobjects where n ame = 'worker_rule' and type = 'R') like '女' 性別 sex begin
25、 drop rule worker_rule 倚窗遠(yuǎn)眺,目光目光盡處必有一座山,那影影綽綽的 黛綠色的影,是春天的顏色。周遭流嵐升騰,沒(méi)露出那真實(shí)的面孔。面對(duì)那流轉(zhuǎn)的 薄霧,我會(huì)幻想,那里有一個(gè)世外桃源。在天階夜色涼如水的夏夜,我會(huì)靜靜地, 靜靜地,等待一場(chǎng)流星雨的來(lái)臨… 許下一個(gè)愿望,不乞求去實(shí)現(xiàn),至少,曾經(jīng),有那么一刻,我那還未枯萎的, 青春的,詩(shī)意的心,在我最美的年華里,同星空做了一次靈魂的交流… 秋日里,陽(yáng)光并不刺眼,天空是一碧如洗的藍(lán),點(diǎn)綴著飄逸的流云。偶爾,一 片飛舞的落葉,會(huì)飄到我的窗前。斑駁的印跡里,攜刻著深秋的顏色。在一個(gè)落雪 的晨,這紛紛揚(yáng)揚(yáng)的雪,飄落著一如千年前的潔白。窗外,是未被污染的銀白色世 界。我會(huì)去迎接,這人間的圣潔。在這流轉(zhuǎn)的歲月里,有著流轉(zhuǎn)的四季,還有一顆 流轉(zhuǎn)的心,亙古不變的心。
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《光的折射》課件-(公開(kāi)課獲獎(jiǎng))2022年滬科版物理-
- UV油墨的基礎(chǔ)知識(shí)課件
- 藍(lán)色簡(jiǎn)約后備護(hù)士長(zhǎng)競(jìng)聘動(dòng)態(tài)課件
- 藍(lán)色清新筆記本翻頁(yè)年終總結(jié)模板課件
- 81二元一次方程組課件(人教版七年級(jí)下)
- 局部解剖學(xué)-頭部-蝶鞍區(qū)、海綿竇、硬腦膜
- 7273第1課時(shí) 位似圖形及作圖
- 供應(yīng)鏈管理-PPT
- 幼兒園管理過(guò)程
- 4索溪谷的“野”2
- 外科補(bǔ)液注意問(wèn)題
- 組織行為學(xué)--價(jià)值觀與態(tài)度
- 燈光教學(xué)課件1
- 中原城市春季車展招商方案
- 祛痰劑醫(yī)學(xué)知識(shí)專家講座