子查询实验报告南京信息工程大学实验(实习)报告一、实验目的1.掌握子查询的表示。2.进一步掌握SQLServer查询分析器的使用方法,加深对SQL语言的嵌套查询语句的理解二、实验准备1.掌握SQL语句的基本语法,并熟悉查询分析器的工作环境。2.完成了实验四,创建了数据库EDUC及各个基本表。3.了解子查询的表示方法,熟悉IN比较符、ANY、EXISTS操作符的用法。三、实验要求1.在实验开始之前做好准备工作。2.完成实验,并验收实验结果提交实验报告。四、实验内容和实验步骤1.在数据库EDUC中实现一下查询:1)求选修了高等数学的学生学号和姓名;selectsno,snamefromstudentwheresnoin(selectsnofromstudent_coursewherecnoin(selectcnofromcoursewherecname='高等数学'));2)求C1课程的成绩高于张三的学生学号和成绩;selectsno,scorefromstudent_coursewhereexists(selectsnofromstudentstudent_coursewheresname='张三'andcno='C1')3)求其他系中比计算机系某一学生年龄小的学生信息(即求其它系中年龄小于计算机系年龄最大者的学生);select*fromstudentwheresage(selectMAX(sage)fromstudentwherespo='CS')andspo4)求其他系中比计算机系学生年龄都小的学生信息;select*fromstudentwheresage(selectsagefromstudentwherespo='CS')andspo5)求选修了C2课程的学生姓名;selectsnamefromstudentwhereexists(select*fromstudent_coursewheresno=student.snoandcno='C2')6)求没有选修C2课程的学生姓名;selectsnamefromstudentwherenotexists(select*fromstudent_coursewheresno=student.snoandcno='C2')7)查询选修了全部课程的学生的姓名;selectsnamefromstudentwheresnoin(selectcnofromstudent_course)8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名。selectsno,snamefromstudentstudent_coursexwherenotexists(select*fromstudent_courseywhere='S2'andnotexists(select*fromstudent_coursezwhere==y.sno))2.提高操作实验建立“工程-零件”数据库及如下4个表,并输入实验数据,用SQL语句实现如下三个查询:1)求供应项目j4红色零件的供应商号及名称select供应商.供应商代码,姓名from供应商,供应零件,零件where供应商.供应商代码=供应零件.供应商代码and工程代码='J4'and供应零件.零件代码=零件.零件代码and零件.颜色='红色'2)求没有上海供应商生成的零件的项目号select工程代码from供应零件wherenotexists(select*from供应商,工程where供应商代码=供应零件.供应商代码and工程代码=工程.工程代码and所在城市='上海')3)至少使用了供应商S5所供应全部零件的项目号。selectdistinct零件代码from供应零件xwherenotexists(select*from供应零件ywherey.供应商代码='S5'andnotexists(select*from供应零件zwherez.供应商代码=x.供应商代码andz.零件代码=x.零件代码))五、实验总结本次试验主要要求我们掌握子查询的表示,进一步掌握SQLServer查询分析器的使用方法,和加深对SQL语言的嵌套查询语句的理解。通过这次实验我又对SQL语句有了更好的理解,巩固了SQL语法,更加熟悉了SQLServer2021的语法结构,对嵌套查询有了更深一步的掌握。