数据库练习题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