新SQL——SERVER实验练习答案.docx





《新SQL——SERVER实验练习答案.docx》由会员分享,可在线阅读,更多相关《新SQL——SERVER实验练习答案.docx(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、SQL-Server 实验答案3 SC表数据的输入SnoCnoGrade30021081128三参照完整性约束 掌握表之间建立外码后,对被参照表的如下操作会有何影响: 修改主码、插入新行、删除新行? 对参照表添加新行、删除行、修改外码值有何影响? 掌握级联修改、级联删除的概念。注意:表SC的Sno是外不表SC的Cno是外不 参照 student 的 sno。参照 course 的 cno。1输入实验前的数据 学生表StudentSnoSnameSsexSageSdept4001赵尹男20SX4002杨开女20JSJ课程表courseCnoCnameCpnoCcredit1088Java5108
2、9数学3学生选课 SCSnoCnoGrade400110889040021088862试验过程1)在SC表中添加新行:SnoCnoGrade4001106676记录试验结果.,写出出现此结果的原因.不能添加,因为在cno是外码,参照course的cno ,但在course中没有1066课程。2)在student表中添加新行SnoSnameSsexSageSdept4003赵辉男21SX记录试验结果.,写出出现此结果的原因. 可以输入3)删除student表的4001 , 4002学生记录试验结果.,写出出现此结果的原因.两个学生不能被删除,因为sc的外码sno参照student的sno, sc
3、中已经有4001, 4002学生的数 据,因此不能删除。思考: 删除SC表的记录有限制吗?没有 采取什么技术能使不能成功执行的命令变得可以执行,且使数据库保持数据完整性。级联删除4)把student表的学号4003改为4018,4001改为4021。记录试验结果.,写出出现此结果的原因.4003可以改为4018,4001不能改为4021因为sc的外码sno参照student的sno, sc中已经有4001的数据,但没有4003的选课数据。思考:采取什么技术能使本题不能执行的命令可以执行,且使数据库保持数据完整性。级联修改5)把sc表中的如下记录的学号从4001改为4011。SnoCnoGrad
4、e4001108890记录试验结果.,写出出现此结果的原因.不能修改,因为sc的外码sno参照student的sno, 4011在student中不存在。如不成功,则可以采取什么方法来实现此要求。需要在student表中添加4011学生。 如不成功,那么把4001修改为4003,能成功吗?能成功!思考:参照完整性规则中,外码可以为空,但SC表中的外码可以为空吗?为什么?举一个外码可以为空的例子。不可以,因为sc表的主码为sno+cno,即sno,eno为主属性,所以不能为空。试验五索引目的:掌握索引的建立、删除的方法。一创建索引1建student的索引为姓名建立索引,索引名:Ix_studen
5、t_sname为系科建立索引,索引名:Ix_student_sdeptcreate index ix_student_sname ON student(sname)create index ix_student_sdept ON student(sdept)2 SC的索引为课程号建立索引:ix_sc_cnocreate index ix_sc_cno ON sc(cno)3 Course的索引为课程名建立唯一性索引:Ix_course_cnamecreate unique index ix_course_cname ON course( cname)4如何SP_HELP查看索引刚才建立的索引?
6、 如何在企业管理器中查看索引?二 册U除索弓I course表的索引IX_course_cnameDROP INDEX course.ix_course_cname三 思考:如何把索引IX_student_sname修改为唯一性索引? 可以使用企业管理器 或先删除索引,再重新建立。*四思考建立索引的目的1输入下列存储过程,该程序生成大量数据供测试: create procedure usp makedata asdeclare nCnt int , sNo varchar(6) , sname varchar(8) set nCnt =12000 一计数器 while nCnt999999 b
7、eginset nCnt = nCnt + 1set sNo = convert(varchar(6) , nCnt) set sName =张+snoinsert into student (sno, sname, ssex, sage) values ( sno,酝name,男,20) endreturn2 exec usp_makedata -生成测试数据 3输入下述测试程序:create procedure usp_test as declare nCount int , data int set nCount=0while nCount806统计选修课程超过2门的学生学号select
8、 sno from sc group by sno having count (*)27统计有10位成绩大于85分以上的课程号。Select eno from scwhere grade85group by eno having count (*) =108统计平均分不及格的学生学号select sno from sc group by sno having avg(grade)609统计有大于两门课不及格的学生学号select sno from sc where grade2三连接1查询JSJ系的学生选修的课程号select eno from student, sc where studen
9、t. sno=sc. sno and sdept=, JSJ2查询选修1002课程的学生的学生姓名(不用嵌套及嵌套2种方法)a: select sname from student,sc where student, sno = sc. sno and cno=, 1002b: select sname from student where sno in (select sno from sc where cno=, 1002)3查询数据库原理不及格的学生学号及成绩select sno,grade from sc ,coursewhere sc eno=course, eno and cnam
10、e= 数据库原理4查询选修“数据库原理”课且成绩80以上的学生姓名(不用嵌套及嵌套2种方法)a: select sname from student , sc , coursewhere student. sno=sc. sno and sc. eno = course, eno and grade80 and cname=数据库原理,b: select sname from student where sno in ( select sno from sc where grade80 and eno in ( select eno from course where cname=,数据库原理
11、,)5查询平均分不及格的学生的学号,姓名,平均分。select sno, max(sname) , avg(grade) as avggrade from sc , studentwhere student. sno=sc. snogroup by student, snohaving avg(grade) 75)B: Select max(sname ) from sc,student where student.sno=sc.sno and Ssex=,女Group by student.sno having avg(grade)75 7查询男学生学号、姓名、课程号、成绩。(一门课程也没有
12、选修的男学生也要列出,不能遗漏) select student, sno, sname, eno, grade from student left join sc ON student.sno=sc. sno and ssex=男四嵌套、相关及其他1查询平均分不及格的学生人数select count(*) from student where sno in (select sno from sc group by sno having avg(grade)=all ( select avg(grade) from sc group by sno )*4查询没有选修1001, 1002课程的学生
13、姓名。Select sname from student where not exists (Select * from course where eno in ( 1001 , 1002 ) andNot exists ( select * from sc where sno=student,sno and eno二course,eno ) )5查询1002课程第一名的学生学号(2种方法)a: select top 1 sno from sc eno=1002 order by grade descb: select sno from sc where eno=1002 andgrade =
14、all (select grade from sc where eno=1002)6查询平均分前三名的学生学号select top 3 sno from sc group by sno order by avg(grade) desc7查询JSJ系的学生与年龄不大于19岁的学生的差集a: select * from student where sdept=, JSJ and sage19b: select * from student where sdept=JSJexcept select * from student where sage90unionselect sno,sname fr
15、om student where sno in (select sno from sc group by sno having avg(grade)85 )9查询每门课程成绩都高于该门课程平均分的学生学号select sno from student where sno not in (select sno from sc X where grade(select avg(grade) from sc Y where Y.sno二X.sno)select sno from student where sno not in (select sno from sc X where grade (s
16、elect avg(sage) from student y where sdept=x.sdept)试验八视图目的:掌握视图的建立、使用。1建立学生学号、姓名、性别、课程号、成绩的视图v_sc 查看V_sc中的数据。Create view v_sc (sno , sname,ssex , eno, grade ) asSelect student.sno , sname,ssex , eno , grade from student, scWhere student.sno=sc.snoSelect * from v_sc1建立学生学号、姓名、出生年月的视图v_age查看V_age中的数据。


- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SQL SERVER 实验 练习 答案

限制150内