1第4章数据查询本章内容•4.1基本查询•4.2嵌套查询•4.3连接查询例题查询与学号为“95002”在同一系学习的学生的基本信息第一步:查找95002号同学所在的系名:第二步:查找‘艺术’系学生Select系别from学生信息表where学号='95002'Select*from学生信息表where系别='艺术'and学号'95002'将第一步嵌入到第二步查询的条件中,构造嵌套查询Select*From学生信息表Where系别=(Select系别from学生信息表where学号=‘95002’)and学号‘95002’练习查询与学号为“95003”年龄相同的学生的基本信息Select*From学生信息表Where年龄=(select年龄from学生信息表where学号=‘95003’)and学号!=‘95003’–一个SELECT-FROM-WHERE语句称为一个查询块–将一个查询块嵌套在另一个查询块的查询称为嵌套查询–子查询的限制不能使用ORDERBY子句–层层嵌套方式反映了SQL语言的结构化嵌套查询•带有比较运算符的子查询•带有IN谓词的子查询•带有ANY或ALL谓词的子查询子查询块出现在WHRER子句中(1)带比较运算符的子查询通过比较算符(=、、、=、、=)引入子查询的查询结果,则子查询的结果必须为零个或一个值例;查询选修了‘1’号课程,并且成绩在该课程平均分以上的学生的学号、成绩Select学号,成绩From选修信息表Where课程号='1'and成绩(selectavg(成绩)From选修信息表Where课程号='1')练习:查询选修了‘1’号课程,并且成绩在2号课程最高分以上的学生的学号、成绩(2)带有ANY或ALL谓词的子查询通过带ANY或ALL的比较运算符引入的子查询可以返回零个、一个或多个值ANY:任意一个值ALL:所有值WHERE表达式比较运算符[ANY|ALL](子查询)需要配合使用比较运算符ANY大于子查询结果中的某个值(MIN)ALL大于子查询结果中的所有值(MAX)ANY小于子查询结果中的某个值(MAX)ALL小于子查询结果中的所有值(MIN)=ANY大于等于子查询结果中的某个值(=MIN)=ALL大于等于子查询结果中的所有值(=MAX)例:查询其他系中比信息系所有学生学生年龄都小的学生姓名和年龄Select姓名,年龄from学生信息表where系别'信息'and年龄all(Select年龄from学生信息表Where系别='信息')练习:1.查询其他系中比数学系所有学生年龄都大的学生姓名及年龄2.查询选修了“1”号课程中的比选修‘2’号课程所有成绩都高的学生的学号,成绩(3)带有IN谓词的子查询Where表达式[NOT]IN(子查询)In子查询,其返回的结果可以包含零个或多个值例:查询没有选修1号课程的学生姓名Select姓名from学生信息表where学号NOTIN(Select学号from选修信息表where课程号=‘1’)练习:1.查询选修了“2”这门课且成绩在85分以上的所有学生的学号、姓名。2.查询没有选修3号课程的学生姓名