当前位置:文档之家› 哈工大 英才学院 数据库 实验四

哈工大 英才学院 数据库 实验四

数据库系统应用实验报告实验4 SQL的视图及存储过程操作学号:姓名:主讲教师:张建国指导教师:张建国提交日期:2012年12月5日计算机科学与技术学院2010年秋季学期1. 实验任务(1) 练习视图操作,并记录操作的语句、问题、问题产生的原因及解决的过程。

(2) 练习存储过程操作,并记录操作的语句、问题、问题产生的原因及解决的过程。

(3) 练习自定义函数操作,并记录操作的语句、问题、问题产生的原因及解决的过程。

2. 实验内容2.1 视图(1) 创建视图(2) 视图更新(3) 视图查询(4) 自己再设计一些感兴趣的操作2.2 存储过程(1) 创建存储过程(2)执行存储过程2.3 自定义函数(1) 标量函数(2) 内嵌表函数(3) 调用函数3. 完成内容3.1 视图(1) 创建视图1)创建某学院全体学生的视图,属性包括:学号、姓名、性别、年龄、高考分数、定向否、省份。

SQL语句:create viewyingcai_student(Sno,Sname,Sex,Sage,Exmascore,Directional,Province)asselectSno,Sname,Sex,year(GETDATE())-year(birthday),Exmascore,Directional,Pr ovincefrom Student join School on Student.Schoolno=School.Schoolnow here Schoolname='英才学院';操作结果截图:问题及解决状况:无2)创建某门课程的成绩单视图,属性包括:学号、姓名和分数。

SQL语句:create view wuli_chengjiasselect Student.Sno,Sname,Totalscorefrom Student join SC on Student.Sno=SC.Snojoin Course on o=owhere Cname='大学物理';操作结果截图:问题及解决状况:无3)创建某个学生的成绩单视图,属性包括:学号、姓名、课名、学分和分数SQL语句:create view diaochan_chengjiasselect Student.Sno,Sname,Cname,Credit,Totalscorefrom Student join SC on Student.Sno=SC.Snojoin Course on o=ow here Sname='貂蝉';操作结果截图:问题及解决状况:无4)创建全体学生的平均成绩视图:属性包括:学号和平均成绩SQL语句:create view all_Gavg(Sno,Avgscore)asselect Student.Sno,AVG(Totalscore)from Student join SC on Student.Sno=SC.Snojoin Course on o=og roup by Student.Sno;操作结果截图:问题及解决状况:无5)创建各省平均高考分数的视图,属性包括:省份和平均考分。

SQL语句:create view pv_Avg(Province,Avgexmascore)asselect Province,AVG(Exmascore)from Studentgroup by Province;操作结果截图:问题及解决状况:无6)创建女生部学生的视图:内容包括:学号、姓名、出生日期、学院名。

SQL语句:create view all_girlasselect Sno,Sname,Birthday,Schoolnamefrom Student join School on Student.Schoolno=School.Schoolno where Sex='女';操作结果截图:问题及解决状况:无(2) 视图更新利用视图完成下列操作:1)在某学院视图中插入一个新同学的全部数据。

SQL语句:INSERT INTO yingcai_student VALUES('6100800115','王珞丹','女',20,538,1,'四川');操作结果截图:问题及解决状况:问题:无法插入原因:生日为计算结果,不能插入2)在某学院视图中插入一个新同学的部分数据。

SQL语句:INSERT INTO yingcai_student(Sno,Sname,Sex)VALUES('6100800115','王珞丹','女');操作结果截图:问题及解决状况:问题:部分数据无法插入到视图中,只能插入到表中3)将全体学生平均成绩视图中的某学生的成绩改为90分。

SQL语句:update all_Gavg set Avgscore=90 where Sno in(select Sno from Student where Sname='张飞');操作结果截图:问题及解决状况:问题:无法插入原因:平均分为计算结果,不能插入(3) 视图查询1)在某学院全体学生视图中查询该学院某个学生的数据。

SQL语句:select*from yingcai_student where Sname='张飞';操作结果截图:问题及解决状况:无2)查询某门课程的成绩单,并按分数降序排列。

SQL语句:select*from wuli_chengji order by Totalscore desc;操作结果截图:问题及解决状况:无3)查询某门学生的成绩单,并按课号升序排列。

SQL语句:selectSno,diaochan_chengji.Sname,diaochan_ame,diaochan_chengji.Cr edit,Totalscore from diaochan_chengji join Course on diaochan_ame=ame order by Cno;操作结果截图:问题及解决状况:问题:只有一门课,体现不出升序4)查询某省高考的平均成绩,并按平均成绩降序排列。

SQL语句:select Province,Avgexmascore from pv_sheet order by Avgexmascore desc;操作结果截图:问题及解决状况:无(4) 自己再设计一些感兴趣的操作查询英才学院所有学生的学号和年龄,并按年龄降序排列。

SQL语句:select Sno,Sage from yingcai_student order by Sage desc;操作结果截图:问题及解决状况:无2.2 存储过程(1) 创建存储过程1) 创建无参数存储过程创建查询全体学生平均成绩的存储过程:属性包括:学号和平均成绩。

SQL语句:操作结果截图:问题及解决状况:2) 创建单参数存储过程创建按学号查询某学生情况的存储过程;SQL语句:操作结果截图:问题及解决状况:创建按姓名查询学生情况的存储过程。

3)创建多参数存储过程创建查询某个学生选修某门课程的分数的存储过程。

SQL语句:操作结果截图:问题及解决状况:(2)执行存储过程利用(1)创建的存储过程执行某些操作。

SQL语句:操作结果截图:问题及解决状况:2.3 自定义函数(1) 标量函数1)创建一个将角度转换成弧度的标量函数。

SQL语句:操作结果截图:问题及解决状况:2)创建一个统计学生总数的标量函数。

SQL语句:操作结果截图:问题及解决状况:3)创建一个计算某学生平均成绩的标量函数。

SQL语句:操作结果截图:问题及解决状况:(2) 内嵌表函数(选做)1)创建一个查询按学号查询学生情况的函数。

SQL语句:操作结果截图:问题及解决状况:2)创建一个统计各学院学生人数的函数,属性包括:学院名称和人数。

SQL语句:操作结果截图:问题及解决状况:(3) 调用函数设计一些操作,调用自己创建的函数。

说明:上述操作可适当修改,以便更好地理解相关内容。

SQL语句:操作结果截图:问题及解决状况:4. 未完成内容无5. 实验总结(1) 实验中遇到的问题,问题产生的原因,如何解决问题,还有哪些问题未得到解决;问题:插入部分数据显示插入成功却找不到产生的原因:部分数据只能插入到表中,插入不到视图中解决方法:无(2) 本次实验的体会。

对视图有了更加深入的了解6. 意见与建议希望实验室的SQL Server早日更新为2008/2012。

实验评价:。

相关主题