实验目的
掌握建立视图、存储过程和触发器对象的使用方法;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