目录

普通子查询:

返回一个值的普通子查询

返回一组值的普通子查询——使用ANY

返回一组值的普通子查询——使用ALL

相关子查询:


子查询分为普通子查询和相关子查询。他们执行顺序是不一样的。

普通子查询:

执行顺序:先执行子查询,子查询返回结果之后,再执行父查询。

返回一个值的普通子查询

[例]查询与‘刘伟’老师职称相同的教师号、姓名。

SELECT TNo,TN FROM T WHERE Prof =(SELECT Prof FROM  T WHERE TN='刘伟')

返回一组值的普通子查询——使用ANY

[例]查询讲授课程号为C5的教师姓名

SELECT TN FROM T WHERE (TNo=ANY(SELECT TNo FROM TC WHERE CNo='C5'))

或者

SELECT TN FROM T WHERE (TNo IN (SELECT TNo FROM TC WHERE CNo='C5'))

或者

SELECT TN FROM T,TC WHERE T.TNo=TC.TNo AND TC.CNo='C5'              /*多关系表的连接查询*/

*教师授课表中找到课程号为C5的教师号TN,然后在教师表中找到教师号对应的教师姓名。(教师表有教师号和教师姓名,教师授课表有教师号和讲授课程号)

[例]查询其他系中比计算机系某一教师工资高的教师的姓名和工资。

SELECT TN,Sal FROM T WHERE (Sal>ANY(SELECT Sal FROM T WHERE Dept='计算机')) AND (Dept<>'计算机')

或者

SELECT TN,Sal FROM T WHERE Sal>(SELECT MIN(Sal) FROM T WHERE Dept='计算机') AND Dept<>'计算机'   /*返回最低工资*/

返回一组值的普通子查询——使用ALL

[例]查询其他系中比计算机系所有教师工资都高的教师姓名和工资。

SELECT TN,Sal FROM T WHERE ( Sal> ALL (SELECT Sal FROM T WHERE Dept='计算机')) AND (Dept<>'计算机')

或者

SELECT TN,Sal FROM T WHERE Sal>(SELECT Max(Sal) FROM T WHERE Dept='计算机') AND Dept<>'计算机'   /*返回最高工资*/

相关子查询:

执行顺序:

  1. 选取父查询表中的第一行记录,内部的子查询利用此行中相关的属性值进行查询;
  2. 父查询根据子查询返回的结果判断此行是否满足查询条件。如果满足条件,则把该行放入父查询的查询结果集合中。
  3. 重复执行这一过程,直到处理完父查询表中的每一行数据。

使用EXISTS

带有EXISTS的子查询不返回任何实际数据,他只能得到逻辑值“真”或“假”。

当子查询的查询结果为非空时,外层的WHERE子句返回真值,否则返回假值。NOT EXISTS与此相反。

[例]用含有EXISTS的语句查询讲授课程号为C5的教师姓名。

SELECT TN FROM T WHERE EXISTS (SELECT * FROM TC WHERE TNo=T.TNo AND CNo='C5')

[例]查询没有讲授课程号为C5的教师姓名。

SELECT TN FROM T WHERE (NOT EXISTS (SELECT * FROM TC WHERE TNo=T.TNo AND CNo='C5'))

纯属个人学习笔记,转载记得附上原文链接

喜欢的小伙伴可以关注点赞收藏三连哦

SQL入门学习(3)子查询相关推荐

  1. PL/SQL 入门学习(一)

    前言:本博客分为两篇,学完之后就可以在项目中使用存储过程进行开发. 在学校的时候虽说上过PL/SQL这门课,然并卵,只恨当时啊!工作关系,需要用到Oracle存储过程.我就简单看了一些教程,特此记录一 ...

  2. SQL进阶之关联子查询行间比较

    SQL进阶之关联子查询行间比较 关联子查询行间比较 越前须知(雾) 具体用法 与最近一年比较营收 移动平均值和移动累计值 查询重叠的时间区间 关联子查询行间比较 越前须知(雾) 本系列参考<SQ ...

  3. SQL进阶之关联子查询练习

    SQL进阶之关联子查询 一.关联子查询简介 二.关联子查询实操 1.CreateTable 2.Sample 一.关联子查询简介 通过关联表内部条件从而达到查询效果 二.关联子查询实操 注:版本使用: ...

  4. Oracle学习:子查询 (sql 嵌套 sql)

    查询比 SCOTT 工资高的员工信息 (1)查找 SCOTT 的工资 select sal from emp where ename='SCOTT'; // 结果:3000 (2)将上一步得到的结果作 ...

  5. SQL学习之子查询,基于Oracle下的HR用户(四)

    六. 子查询 1 子查询介绍 1.1 什么是子查询 子查询是一个 SELECT 语句,它是嵌在另一个 SELECT 语句中的子句. 可以用组合两个查询的方法解决这个问题,放置一个查询到另一个查询中.内 ...

  6. SQL语言之DQL语言学习(十)子查询

    含义: 出现在其他语句中的select语句,称为子查询或内查询外部的查询语句,称为主查询或外查询 分类 按子查询出现的位置: select后面: 仅仅支持标量子查询 from后面: 支持表子查询 wh ...

  7. 数据库SQL入门学习

    经过一段时间的学习,也对数据库有了一些认识. 数据库基本是由表,关系,操作组成:对于初学者首先要学的: 1.数据库是如何存储数据的 表,约束,触发器 2.数据库是如何操作数据的 insert,upda ...

  8. oracle多表嵌套查询使用,oracle sql 多表 嵌套子查询 连接查询, join where exist i...

    转:http://hi.baidu.com/delphi_relive/blog/item/d7c0034a49c4932208f7ef21.html in 和 exists也是很好区别的. in 是 ...

  9. mysql学习day05—子查询 / CASH语句 / 连接查询

    子查询 单行子查询:返回单行单列 多列子查询:返回单行多列(使用成对比较) 多行子查询:返回多行单列 相关子查询:子查询使用了外部SQL的某些表或列(但是外部SQL不可使用子查询中的表和列) 嵌套子查 ...

最新文章

  1. Go 学习笔记(43)— Go 标准库之 os/exec(执行外部命令、非阻塞等待、阻塞等待、命令输出)
  2. 理解 angular2 基础概念和结构 ----angular2系列(二)
  3. 苹果发布会体现出的未来趋势
  4. commons-fileupload 图片上传示例
  5. FTP 两种传输模式 Binary 和 ASCII 的区别
  6. nginx源码学习资源
  7. Python深度学习:No handles with labels found to put in legend.
  8. linux 禁用 内核 驱动程序,Linux设备驱动程序学习----5.模块的初始化和关闭
  9. 15-1 并发版爬虫架构
  10. js字体溢出字体变小_可变字体:它们是什么,以及如何使用它们
  11. 犀牛建立html格式,犀牛基础操作图文教程,教你rhino如何导出cad文件格式
  12. Laravel框架安装
  13. 使用微信企业号群发员工工资条
  14. onlyoffice 在线预览编辑office
  15. 第六章-循环控制结构
  16. 让Fireball CodeEditor控件禁止中文双倍输入
  17. 台式计算机启动叫两声,电脑开机2声短报警什么情况
  18. python爬楼梯多少种_Python 爬楼梯问题--有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?...
  19. php做网站弊端,PHP 做网站真好用。
  20. 2021高考成绩查询省排名,2021年全国高考难度省份排名 高考最难的省份排名公布...

热门文章

  1. 怎样禁止系统的信使服务(转)
  2. 企业信使运营管理平台登陆入口 发送方法
  3. Windows CMD窗口快速切换到某目录的方法
  4. 高效可控行事8种思维模型
  5. php隐写,数据隐藏技术
  6. java 回头是岸总结入门篇(一)java环境
  7. R语言 - seasonal ARIMA与带傅里叶修正项的ARIMA预测及比较
  8. C- 字母金字塔打印
  9. 如何参与美股市场投资?有哪些美股市场投资攻略?
  10. 王佩丰excel学习笔记(一):第一——二讲