




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、4.3 数据查询 SQL语言中最重要、最核心的操作就是数据查询。关系代数的运算在关系数据库中主要由SQL数据查询来体现。 1 SELECT 语句完整的句法: 其基本格式为:SELECT ALL|DISTINCT , FROM , WHERE GROUP BY HAVING ORDER BY ASC|DESC ;2 嵌套查询 一个SELECT-FROM-WHERE语句称为一个查询块,将一个查询块嵌套在另一个查询块的WHERE子句或HAVING子句的条件中的查询称为嵌套查询。Select sname from student where sno in( select sno from sc whe
2、re cno=c2);外查询(父查询)内查询(子查询)注意:子查询中不能含有order by子句,只能对最终结果排序。执行顺序由里往外,子查询的结果作为父查询的条件。31、不相关子查询 子查询的查询条件不依赖于父查询,这类子查询称为不相关子查询。子查询可分成不相关子查询和相关子查询 不相关子查询的执行过程:先执行子查询,将子查询的结果作为父查询的条件,然后执行父查询。4不相关子查询的特点: 子查询能够独立执行,不依赖于外层父查询 子查询只执行一次。 先执行子查询,后执行父查询Select sname from student where sno in( select sno from sc w
3、here cno=c2);5例:查询选修课程号为c2的学生姓名。 SELECT SnameFROM Student,SCWHERE Student.Sno=SC.Sno and Cno=c2; 方法一:采用多表等值连接实现(1)带有IN谓词的子查询6例:查询选修课程号为c2的学生姓名。 SELECT Sname FROM Student WHERE Sno IN ( SELECT Sno FROM SC WHERE Cno=c2);方法二:采用不相关子查询实现7例:查询既没有选修课程号c1,也没有选修课程号c2的学生的学号Select snoFrom scWhere sno not in (
4、select sno from sc where cno=c1 ) and sno not in ( select sno from sc where cno=c2);8例:查询选修了课程名为“java”的学生学号和姓名Select sno,snameFrom studentWhere sno in (select sno from sc where cno in (select cno from course where cname=java);(1)首先在Course表中找出java的课程号c2(2)然后在SC表中找出选修了c2号课程的学生学号(3)最后在Student表中取出Sno和Sn
5、ame9上面例题:也可以用多表连接查询来实现Select student.sno,snameFrom student,sc,courseWhere student.sno=sc.sno and o=o and cname=java;10(2)带有比较运算符的子查询可以用、=、=、!=或等比较运算符。 例:查询与学号“05880101”学生在同一系别的学生学号和姓名。 SELECT Sno,Sname FROM Student WHERE Dept = ( SELECT Dept FROM Student WHERE Sno=05880101);也可以用前面学习的IN谓词来实现。11(3)带有A
6、NY谓词或ALL谓词的子查询 ANY大于子查询结果集中的某个值 ALL大于子查询结果集中的所有值 ANY小于子查询结果集中的某个值= ANY大于等于子查询结果集中的某个值= ALL大于等于子查询结果集中的所有值= ANY小于等于子查询结果集中的某个值= ALL小于等于子查询结果集中的所有值= ANY等于子查询结果集中的某个值= ALL等于子查询结果集中的所有值(无意义) ANY不等于子查询结果集中的某个值(无意义) ALL不等于子查询结果集中的任何一个值12 all 等价于 not in =any 等价于 in =all、any没有意义13例:查询选修课程号为c2的学生姓名。 (IN与=ANY
7、等价) SELECT Sname FROM Student WHERE Sno =ANY ( SELECT Sno FROM SC WHERE Cno=c2);14例:查询比所有男同学年龄都大的女同学的学号、姓名和年龄。SELECT Sno,Sname,AgeFROM StudentWHERE Sex=女 and Ageall (SELECT Age FROM Student WHERE Sex=男); 15 用聚组函数实现子查询通常比直接用ANY或ALL查询效率高,ANY与ALL与聚组函数的对应关系如表所示。ANYALL=IN无意义无意义NOT IN MAX MIN= MAX MIN MAX
8、= MIN= MAX16例:查询其他系中比数学系某一学生年龄大的学生姓名和年龄。Select sname,agefrom studentwhere dept 数学系 and ageany(select age from student where dept=数学系);Select sname,agefrom studentwhere dept 数学系 and Age (select min(age) from student where dept=数学系);或17例:查询其他系中比数学系所有学生年龄都大的学生姓名和年龄。或Select sname,agefrom studentwhere de
9、pt 数学系 and ageall(select age from student where dept=数学系);Select sname,agefrom studentwhere dept 数学系 and Age (select max(age) from student where dept=数学系);182、相关子查询 子查询的查询条件依赖于外层父查询的某个属性值,称这类查询为相关子查询。相关子查询的特点: 子查询不能独立运行,子查询的条 件依赖父查询中取的值。 子查询多次运行。先执行父查询,后执行子查询。19(1)带有比较运算符的相关子查询 例:查询所有课程成绩均及格的学生学号和姓名
10、。 SELECT Sno,Sname FROM Student WHERE 60= ( SELECT MIN(Grade) FROM SC WHERE Student.Sno=SC.Sno);20(2)有EXISTS谓词的子查询 1. EXISTS谓词存在量词 带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。若内层查询结果非空,则外层的WHERE子句返回真值若内层查询结果为空,则外层的WHERE子句返回假值2. NOT EXISTS谓词若内层查询结果非空,则外层的WHERE子句返回假值若内层查询结果为空,则外层的WHERE子句返回真值21例:查询
11、选修c2课程的学生姓名。 select sname from student where exists ( select * from sc where student.sno=sc.sno and cno=c2);22例:查询没有选修c2课程的学生姓名。 select sname from student where not exists ( select * from sc where student.sno=sc.sno and cno=c2);23例:查询没有选课的学生学号和姓名。 select sno,sname from student where not exists ( select * from sc where student.sno=sc.sno);24例: 假设全体同学都选修了相应的课程且有成绩,那么查询所有课程成绩均大于80分的学生学号和姓名。 SELECT Sno,Sname FROM Student WHERE NOT EXISTS ( SELECT * FROM SC WHERE Student.Sno=SC.Sno and Grade=80);25例:查询选修全部课程的学生姓名。(相当于查
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康管理委托协议书范本
- 消防泵房施工协议书范本
- 转包承诺协议书范本
- 体育教育与传播研究考核试卷
- 创业投资组合中的投资决策中的道德风险研究考核试卷
- 医用橡胶制品细分市场消费者年龄分层分析考核试卷
- 区块链在产权交易中的智能合约合规性审查流程优化考核试卷
- 印刷标准化与印刷行业人才培养计划考核试卷
- 光伏设备故障预测的实时监测与响应策略考核试卷
- 《海滨小城》(第1课时)教学课件
- 茶叶加工考试试题及答案
- 8D改善报告模板
- JJF(新) 129-2024 阻容法烟气含湿量测定仪校准规范
- 急性心力衰竭中国指南(2022-2024)解读
- 腹腔镜远端胃癌根治术
- 银行解控申请书
- 《外来物种入侵》课件
- 商业步行街项目招标文件样本
- 食品厂员工食品安全培训
- UL4703标准中文版-2020光伏线UL中文版标准
- 《T-ZGYSYJH 005-2022 食养药膳烹饪技术操作规范 通则》
评论
0/150
提交评论