SQL入门学习(3)子查询
目录
普通子查询:
返回一个值的普通子查询
返回一组值的普通子查询——使用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<>'计算机' /*返回最高工资*/
相关子查询:
执行顺序:
- 选取父查询表中的第一行记录,内部的子查询利用此行中相关的属性值进行查询;
- 父查询根据子查询返回的结果判断此行是否满足查询条件。如果满足条件,则把该行放入父查询的查询结果集合中。
- 重复执行这一过程,直到处理完父查询表中的每一行数据。
使用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)子查询相关推荐
- PL/SQL 入门学习(一)
前言:本博客分为两篇,学完之后就可以在项目中使用存储过程进行开发. 在学校的时候虽说上过PL/SQL这门课,然并卵,只恨当时啊!工作关系,需要用到Oracle存储过程.我就简单看了一些教程,特此记录一 ...
- SQL进阶之关联子查询行间比较
SQL进阶之关联子查询行间比较 关联子查询行间比较 越前须知(雾) 具体用法 与最近一年比较营收 移动平均值和移动累计值 查询重叠的时间区间 关联子查询行间比较 越前须知(雾) 本系列参考<SQ ...
- SQL进阶之关联子查询练习
SQL进阶之关联子查询 一.关联子查询简介 二.关联子查询实操 1.CreateTable 2.Sample 一.关联子查询简介 通过关联表内部条件从而达到查询效果 二.关联子查询实操 注:版本使用: ...
- Oracle学习:子查询 (sql 嵌套 sql)
查询比 SCOTT 工资高的员工信息 (1)查找 SCOTT 的工资 select sal from emp where ename='SCOTT'; // 结果:3000 (2)将上一步得到的结果作 ...
- SQL学习之子查询,基于Oracle下的HR用户(四)
六. 子查询 1 子查询介绍 1.1 什么是子查询 子查询是一个 SELECT 语句,它是嵌在另一个 SELECT 语句中的子句. 可以用组合两个查询的方法解决这个问题,放置一个查询到另一个查询中.内 ...
- SQL语言之DQL语言学习(十)子查询
含义: 出现在其他语句中的select语句,称为子查询或内查询外部的查询语句,称为主查询或外查询 分类 按子查询出现的位置: select后面: 仅仅支持标量子查询 from后面: 支持表子查询 wh ...
- 数据库SQL入门学习
经过一段时间的学习,也对数据库有了一些认识. 数据库基本是由表,关系,操作组成:对于初学者首先要学的: 1.数据库是如何存储数据的 表,约束,触发器 2.数据库是如何操作数据的 insert,upda ...
- oracle多表嵌套查询使用,oracle sql 多表 嵌套子查询 连接查询, join where exist i...
转:http://hi.baidu.com/delphi_relive/blog/item/d7c0034a49c4932208f7ef21.html in 和 exists也是很好区别的. in 是 ...
- mysql学习day05—子查询 / CASH语句 / 连接查询
子查询 单行子查询:返回单行单列 多列子查询:返回单行多列(使用成对比较) 多行子查询:返回多行单列 相关子查询:子查询使用了外部SQL的某些表或列(但是外部SQL不可使用子查询中的表和列) 嵌套子查 ...
最新文章
- Go 学习笔记(43)— Go 标准库之 os/exec(执行外部命令、非阻塞等待、阻塞等待、命令输出)
- 理解 angular2 基础概念和结构 ----angular2系列(二)
- 苹果发布会体现出的未来趋势
- commons-fileupload 图片上传示例
- FTP 两种传输模式 Binary 和 ASCII 的区别
- nginx源码学习资源
- Python深度学习:No handles with labels found to put in legend.
- linux 禁用 内核 驱动程序,Linux设备驱动程序学习----5.模块的初始化和关闭
- 15-1 并发版爬虫架构
- js字体溢出字体变小_可变字体:它们是什么,以及如何使用它们
- 犀牛建立html格式,犀牛基础操作图文教程,教你rhino如何导出cad文件格式
- Laravel框架安装
- 使用微信企业号群发员工工资条
- onlyoffice 在线预览编辑office
- 第六章-循环控制结构
- 让Fireball CodeEditor控件禁止中文双倍输入
- 台式计算机启动叫两声,电脑开机2声短报警什么情况
- python爬楼梯多少种_Python 爬楼梯问题--有n阶台阶,上楼可以一步上1阶,2阶,3阶,计算共有多少种不同的走法?...
- php做网站弊端,PHP 做网站真好用。
- 2021高考成绩查询省排名,2021年全国高考难度省份排名 高考最难的省份排名公布...