1、 实验报告一、 实验内容数据库的嵌套查询实验二、 实验目的进一步掌握 SQL Server 的使用方法,学会利用 Transact-SQL 语言表达嵌套查询语句,理解相关的 SQL 语句。三、 实验内容用 Transact-SQL 表达嵌套查询操作,包括使用 IN、比较符、ANY 或 ALL 和 EXISTS 等操作符,通过 SQL Server 查询分析器输入、分析并显示正确结果。四、 实验前准备Courses 表:Reports 表:Students 表:五、 实验结果1)求选修了高等数学的学生学号和姓名2)求 C1 课程的成绩高于张三的学生学号和成绩3)求其他系中比计算机系某一学生年龄小
2、的学生4)求其他系中比计算机系学生年龄都小的学生5)求选修了 C2 课程的学生姓名6)求没有选修 C2 课程的学生姓名7)查询选修了全部课程的学生的姓名8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名六、 主要实验步骤1)求选修了高等数学的学生学号和姓名select sno,snamefrom students awhere sno in(select snofrom reports bwhere sno=a.sno and cno in(select cnofrom courseswhere cno=o and cname=高等数学)2)求 C1 课程的成绩高于张三的学生
3、学号和成绩select sno,gradefrom reportswhere cno=1 and grade(select gradefrom reportswhere cno=1 and sno=(select snofrom studentswhere sname=张三)3)求其他系中比计算机系某一学生年龄小的学生select sno,snamefrom studentswhere sdept计算机 and 2012-year(birthday)计算机 and 2012-year(birthday)all(select 2012-year(birthday)from studentswhe
4、re sdept=计算机)5)求选修了 C2 课程的学生姓名select snamefrom students awhere exists(select *from reportswhere cno=2 and sno=a.sno)6)求没有选修 C2 课程的学生姓名select snamefrom students awhere not exists(select *from reportswhere cno=2 and sno=a.sno)7)查询选修了全部课程的学生的姓名select snamefrom students awhere not exists(select *from co
5、urses bwhere not exists(select *from reportswhere cno=o and sno=a.sno)8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名select distinct sno,snamefrom students awhere not exists(select *from reports bwhere sno=2 and not exists(select *from reports where sno=a.sno and cno=o)七、 实验出现的问题和解决办法出现的问题:查询文件关闭后开启执行出现“对象名无效”错误解决方法:(1)通过鼠标选择可用数据库为 Teach 数据库,即对象数据库;(2)利用 SQL 语句“USE Teach”即“USE ”+数据库名称指定对象数据库。注意事项:(1)输入 SQL 语句时应注意,语句中使用西文操作符号,包括引号、等号、逗号等;(2)选定对象数据库后进行相应的查询。八、 体会与提高运用 SQL 语言需注意细节问题,例如符号的使用、数据库的使用等。