數據庫練習題7--建立視圖、存儲過程和觸發器對象

實驗目的
掌握建立視圖、存儲過程和觸發器對象的使用方法;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
  1. 選擇一個上面建立的視圖進行刪除操做
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