實驗目的
掌握建立視圖、存儲過程和觸發器對象的使用方法;web
1.建立一個只選修8號課程的學生狀況的視圖信息svg
create view stu_8 as select student.sno,student.sname,sage,ssex from student,sc where student.sno=sc.sno and cno=8
2.建立一個視圖view_stu,只包含學生的學號,姓名,年齡信息code
create view view_stu as select sno,sname,sage from student
3.在上一題視圖的基礎上建立年齡在20歲以上的的學生的視圖xml
select sno,sname,sage from view_stu where sage>20
4.建立一個包含不及格同窗及90分以上同窗的學號、姓名、課程名稱及成績的視圖對象
select student.sno,student.sname,cname,grade from student,sc,course where student.sno=sc.sno and sc.cno=course.cno and (grade>90 or grade<60)
5.選擇一個上面建立的視圖,查看視圖的信息it
select sno,sname,sage from stu_8
drop view stu_8
7.從視圖view_stu中查詢19歲的男生記錄基礎
select * from view_stu where sage=19
8.經過視圖view_stu中插入一行數據。學號:2006010010,姓名:趙青,年齡:date
insert into view_stu values('200610','趙青','') select * from view_stu where sname='趙青'
9.將視圖view_stu中姓名爲「李蕾」的年齡改成「22」select
update view_stu set sage='22' select * from view_stu where sname='李蕾'
10.經過視圖 view_stu將姓名爲「李貴」的記錄刪除webkit
delete from view_stu where sname='李貴'
11.自行選擇上面建立的一個視圖插入一個記錄。
insert into view_stu values ('20000203','米米','19')
12.自行選擇一個視圖根據必定的條件進行查詢。
select * from view_stu where sage=19
存儲過程
1.建立存儲過程返回所有男生選課及成績等相關信息
create procedure stu_j as select distinct a.sno,sname,cno,grade from student a,sc where a.sno=sc.sno and ssex='男' exec stu_j
2.建立一個帶輸入參數的存儲過程,可以根據參數向學生表中插入一條記錄
create procedure student_insert (@sno char(9),@sname char(8), @sage int,@ssex char(2), @sdept char(5)) as insert into student(sno,sname,sage,ssex,sdept) values(@sno,@sname,@sage,@ssex,@sdept) exec student_insert @sno='20000203', @sname='子子',@sage=19,@ssex='男',@sdept='cs'
3.建立一個帶輸入參數的存儲過程,根據不一樣的學生名參數,返回該學生的全部課程成績。
create proc M3 @sname char(10) as select cno ,grade from sc join student on sc.sno = student.sno where sname = @sname exec M3 @sname='劉備'
4.建立一個帶輸入輸出參數的存儲過程,根據輸入的系部名,統計該系學生的平均成績並輸出。
create proc M4 @sdept char(8), @avg int output as select @avg=AVG(grade) from sc join student on sc.sno = student.sno where sdept=@sdept declare @x int exec M4 @sdept='CS',@avg=@x output print @x
觸發器
1.建立student表的DELETE觸發器,當一個學生退學後,信息從student表中刪除,觸發在sc表中刪除該生選課狀況。
create trigger M1 on sc for delete as delete grade from sc where sno is null
2.建立一個觸發器,檢查在sc表中輸入一門課程成績,必須符合在0到100分範圍內。
create trigger M2 on sc after insert ,update as if exists ( select * from inserted where grade not between 0 and 100 ) rollback