文章目录

  • 子查询的定义
  • 无关子查询
    • 1. 查询与“张三”在同一个系学习的学生的学号、姓名和专业。
    • 2. 查询 1号课的考试成绩 比“张三”高的学生的学号和姓名。
    • 3. 查询计算机系年龄最大的学生的学号和姓名。(用了ALL)
    • 4. 查询选修了“1”号课程的学生姓名和所在系。
    • 5.查询有2个以上学生平均成绩超过60分的系
  • 相关子查询
    • 1. 查询成绩比该课的平均成绩低的学生的学号、课程号、成绩。
    • 2. 查询有2门以上课程的成绩在80分以上的学生的学号、姓名、专业。
  • 带有EXISTS的子查询(存在性测试)
  • 使用子查询时要注意以下几点

子查询的定义

SELECT语句可以嵌套在其他许多语句中,这些语句包括SELECT、INSERT、UPDATE及DELETE等,
这些嵌套的SELECT语句就被称为子查询


无关子查询

无关子查询在外部查询之前执行,然后返回数据供外部查询使用,无关子查询中不包含对于外部查询的任何引用

1. 查询与“张三”在同一个系学习的学生的学号、姓名和专业。

SELECT sno, sname, sdept
FROM student
WHERE sdept IN(SELECT sdept FROM  studentWHERE sname='张三')

2. 查询 1号课的考试成绩 比“张三”高的学生的学号和姓名。

SELECT student.sno,sname
FROM student,sc
WHERE student.sno = sc.sno and cno='1'
and score>(SELECT score FROM sc WHERE cno='1' and  sno =(SELECT sno FROM student WHERE sname='张三'))

3. 查询计算机系年龄最大的学生的学号和姓名。(用了ALL)

SELECT sno,sname
FROM student
WHERE sage>= ALL(SELECT sage FROM student WHERE sdept='CS')

4. 查询选修了“1”号课程的学生姓名和所在系。

SELECT sname,sdept
FROM student
WHERE sno IN(SELECT sno FROM sc    WHERE cno='1')

5.查询有2个以上学生平均成绩超过60分的系

SELECT sdept
FROM student,(SELECT sno FROM SC GROUP BY sno HAVING AVG(score)>=60) s      --派生表ss为成绩大于60分的学生的学号
WHERE student.sno=s.sno
GROUP BY sdept
HAVING COUNT(*)>=2

相关子查询

在相关子查询中,子查询的执行依赖于外部查询,多数情况下是子查询的WHERE子句中引用了外部查询的表。

相关子查询的执行过程与无关子查询完全不同,无关子查询中子查询只执行一次,而相关子查询中的子查询需要重复地执行。

相关子查询的执行过程:

①子查询为外部查询的每一行执行一次,外部查询将子查询引用的列的值传给子查询。
②如果子查询的任何行与其匹配,外部查询就返回结果行。
③再回到第一步,直到处理完外部表的每一行。

1. 查询成绩比该课的平均成绩低的学生的学号、课程号、成绩。

SELECT sno,cno,score
FROM  sc a
WHERE score<(SELECT avg(score)  FROM sc b  WHERE b.cno=a.cno)

2. 查询有2门以上课程的成绩在80分以上的学生的学号、姓名、专业。

SELECT sno,sname, specialty
FROM student s
WHERE (SELECT COUNT(*) FROM sc WHERE sc.sno=s.sno and score >=80)>=2

带有EXISTS的子查询(存在性测试)

运算符EXISTS:
如果在子查询的结果集内包含有一行或多行,则存在性测试返回TRUE
如果不包含任何行,则返回FALSE。

NOT EXISTS: 将对存在性测试结果取反

查询所有选修了‘1’号课程的学生姓名。SELECT sname FROM student
WHERE EXISTS (SELECT * FROM scWHERE sno=student.sno AND cno= ‘1')

使用子查询时要注意以下几点

3. 多层select的使用:子查询的定义、无关子查询、相关子查询相关推荐

  1. SQL——相关子查询和不相关子查询

    SQL--相关子查询和不相关子查询 不相关子查询 相关子查询 在SQL中经常使用在"FROM/WHERE"字句中包含一个形如"SELECT-FROM-WHERE" ...

  2. SQL子查询总结:相关子查询与非相关子查询有什么区别

    如果一个select语句能够返回单个值或者一列值,且该select语句嵌套在另一个SQL语句(例如select语句.insert语句.update语句或者delete语句)中,那么该select语句成 ...

  3. SQL相关子查询是什么?和嵌套子查询有什么区别?

    文章目录 两者的各种叫法 相关子查询MySQL解释 相关子查询Wikipedia解释 相关子查询执行步骤拆解 相关子查询和嵌套查询的区别 参考资料 两者的各种叫法 相关子查询叫做:Correlated ...

  4. 嵌套查询:相关子查询和非相关子查询

    嵌套查询 一个select-From-Where查询语句块可以嵌套在另一个select-From-Where查询块的Where子句中,称为嵌套查询. 外层查询称为父查询,主查询.内层查询称为子查询,从 ...

  5. 翻译:通向T-SQL的阶梯:超越基础水平3:建立相关子查询

    原文链接:http://www.sqlservercentral.com/articles/Stairway+Series/105972/   原文作者:Gregory Larsen 该系列 本文是楼 ...

  6. T-SQL的进阶:超越基本级别3:构建相关子查询——701小组

    T-SQL的进阶:超越基本级别3:构建相关子查询 格雷戈里·拉森,2014/03/05 原文链接: http://www.sqlservercentral.com/articles/Stairway+ ...

  7. 什么是 相关子查询 和 非相关子查询 ?

    1.相关子查询: 先执行主查询,再针对主查询返回的每一行数据执行子查询,如果子查询能够返回行,则这条记录就保留,否则就不保留. --举例1:相关子查询查询:查询所有是领导的员工信息 select * ...

  8. 分页查询有数据无数据源问题

    分页查询有数据无数据源问题 使用前端查询有数据但无数据源问题 问题详情 具体问题演示 代码演示 解决办法 使用前端查询有数据但无数据源问题 问题详情 表格有自带的分页功能,后台分页主要是通过传{lim ...

  9. mysql非结构化查询_Mysql(2.3) 简单查询(SELECT)、子查询

    结构化查询语言(sql) SQL概念和规则 关键字:SQL语言保留的字符串(SELECT FORM) 语句:一条完整的SQL命令(SELECT * FROM dept) 子句:部分的SQL语句,通常由 ...

最新文章

  1. 8.0 C++远征:对象数组
  2. [Firebug]用来武装Firebug的十三款Firefox插件
  3. springboot mail插件/JavaMailSenderImpl 发邮件。163网易企业邮箱调用的坑。
  4. 基于实时深度学习的推荐系统架构设计和技术演进
  5. java简单的for循环多线程
  6. 第一阶段:前端开发_Mysql——表与表之间的关系
  7. 大数据学习知识点导图
  8. pytorch修改tensor的维度(修改为任意维度,或单纯的增减维度)
  9. “通讯录不属于用户隐私”?今日头条:绝对不认可这个说法
  10. 【算法】八皇后问题 Python实现
  11. TeaVM编译耗时太长,为节省时间,跳过test
  12. 生成对抗神经网络基本思想
  13. android 休眠任务不执行_Android休眠机制
  14. 别出心裁的Linux系统调用学习法
  15. nginx worker shutting down状态超时退出配置
  16. 甲骨文服务器(Oracle Cloud)开启root用户登录
  17. OpenCV4 Viz模块使用学习(一)
  18. Excel给证件照换底色,红、蓝、白底任你换,看完涨知识了
  19. 最新青龙面板拉库JS
  20. Bootstrap布局之移动开发基础加容器

热门文章

  1. 已知两点和弧长lisp_已知圆心和两点画圆弧(算法)(计算机图形)(C#)
  2. 记录SQL查询汉字、字母、数字
  3. ZETA与RFID在供应链物流场景中是否可以互补?
  4. 站外seo优化有用吗?值得投入时间和精力吗?
  5. 用PyQt5编辑 12306车票信息爬取程序
  6. 计算机程序设计c++ 11-1:派生类
  7. html5 画面分割,一种高清视频多画面分割裂屏显示的解决方法
  8. Centos7下Ceph的多机部署
  9. (本博客软件无法安装)install failed container error 的解决方法
  10. 2018.06.19 订单明细修改