数据库sql嵌套查询题_sql子查询嵌套优化

数据库sql嵌套查询题_sql子查询嵌套优化一、嵌套查询概念在sql语言中,一个select-from-where语句成为一个查询块,将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询成为嵌套查询。外层的查询块称为外层查询或父查询,内层的查询称为内层查询或子查询。注意点:子查询的select语句不能使用orderby子句,orderby只能对最终查询结果排序。嵌套查询分类:1、相关子查询/关联子查询:子查询的查询条件依赖于父查询,比如,如果子查询需要执行多次,即采用循环的方式,先从外部查询开始,每

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、嵌套查询概念

在sql语言中,一个select-from-where语句成为一个查询块,将一个查询块嵌套在另一个查询块的where子句或having短语的条件中的查询成为嵌套查询。外层的查询块称为外层查询或父查询,内层的查询称为内层查询或子查询。

注意点:子查询的select语句不能使用order by 子句,order by 只能对最终查询结果排序。

嵌套查询分类:
1、相关子查询/关联子查询:子查询的查询条件依赖于父查询,比如,如果子查询需要执行多次,即采用循环的方式,先从外部查询开始,每次都传入子查询进行查询,然后再将结果反馈给外部,这种嵌套的执行方式就称为关联子查询。
2、不相关子查询/非相关子查询:子查询的查询条件不依赖于父查询,比如:子查询从数据表中查询了数据结果,这个数据结果只执行一次,然后这个数据结果作为主查询的条件进行执行,这样的子查询叫做非关联子查询。

二、嵌套查询方式

2.1 带有比较运算符的子查询

带有比较运算符的子查询是指父查询和子查询之间用比较运算符连接,当用户能确切知道子查询返回的是单个值时,可以用带有比较运算符的子查询;

比较运算符:= , < , > , >= , <= , != , <>

例如:子查询是查询学生表中姓名为张三的学生所在的系,父查询是查询该系所有学生的姓名和学号。张三只能在一个系,所以子查询的结果是单个值,可以使用比较运算符连接。

select Sname,Sno
from Student
where Sdept = (
		select Sdept
		 from Student
		 where Sname="张三")

2.2 带有in谓词的子查询

用在where子句中用来判断查询的属性是否在多个值的列表中。返回满足in列表中的满足条件的记录。

2.3 带有any(some)或all谓词的子查询

有的系统用any,有的用some;

子查询返回单值时可以用比较运算符,但返回多值时使用any/some谓词修饰符。而使用any(some)或all谓词时则必须同时使用比较运算符,或者说any或all是为了配合比较运算符而产生的。
在这里插入图片描述

2.4 带有exists谓词的子查询

exists直译就是存在,代表存在量词。带有exists谓词的子查询不返回任何数据,只产生逻辑真值”true“或逻辑假值”false“。它只查找满足条件的那些记录。一旦找到第一个匹配的记录后,就马上停止查找。

select Sname
from Student
where exists
		(select * 
		from sc
		where Sno=Student.Sno and Cno ='1')

使用存在量词exists后,若子查询结果为空,则外层的where子句返回真值,否则返回假值。
由exists引出的子查询,其目标列表达式通常都是用 * ,因为带exists的子查询只返回真值或假值,给出列名没有实际意义。

与exists相反的是not exists谓词,作用与exists相反

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169401.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 奉劝各位学弟学妹们,该打造你的技术影响力了!

    奉劝各位学弟学妹们,该打造你的技术影响力了!CSDN的学弟学妹们,大家好呀,我是沉默王二。放在一年前,打死我也不相信,这四个平淡无奇的字组合在一起竟然充满了魔力!2019年的时候,我看过一本书,名叫《影响力》,应该有不少学弟学妹也看过。但说实在的,这本书我就看了几页,就看不下去了,不是这书不好,而是我觉得它不适合我,因为我那时候没什么影响力(谦虚点)。没有影响力的时候想着怎么扩大影响力,我就觉得有点扯淡。就像没有财的时候想着理财一样,有点白日做梦。与其白日做梦,不如脚踏实地,换一句浅显易懂的话,就是,与其想着理财,不如想想怎么攒钱。如果连原

    2022年5月22日
    33
  • 最权威的成都Java培训机构排名榜单公布啦,学Java必看[通俗易懂]

    最权威的成都Java培训机构排名榜单公布啦,学Java必看[通俗易懂]目前,市面上的Java培训机构已经是多到数不胜数,但量大并不代表优质,鱼龙混杂的现象普遍存在。对于怎样选择靠谱的成都Java培训机构,大家心里几乎是没有什么概念可言的。其中,不乏有跟风的同学。这种情况下做出的选择是非常盲目的,并且效果也不会太好。我们在选择时既要对培训机构进行详细的咨询和了解,又要掌握培训班内的学习状态,最后选择适合自己的。那么截止到现在,综合了成都Java培训机构的教学环境、教学形式、师资力量、口碑、规模等等,得出了成都Java培训机构排名榜单,注:仅供参考。1.成都动力.

    2022年7月8日
    49
  • Idea激活码永久有效Idea2020.2.3激活码教程-持续更新,一步到位「建议收藏」

    Idea激活码永久有效Idea2020.2.3激活码教程-持续更新,一步到位「建议收藏」Idea激活码永久有效2020.2.3激活码教程-Windows版永久激活-持续更新,Idea激活码2020.2.3成功激活

    2022年6月17日
    155
  • 基于Java swing+mysql+eclipse的【水电费管理系统】

    基于Java swing+mysql+eclipse的【水电费管理系统】本项目为前几天收费帮学妹做的一个项目,Javaswing项目,在工作环境中基本使用不到,但是很多学校把这个当做编程入门的项目来做,故分享出本项目供初学者参考。CSDN9.9赞助下载:https://download.csdn.net/download/weixin_44893902/20545860白嫖:加QQ68872185一、效果演示主要功能:普通用户:用户用水用电查询(根据时间查询、导出Excel)管理员用户:用户信息管理>>平台用户信息查询(修改信.

    2022年6月17日
    21
  • 1174: 零起点学算法81——求整数绝对值

    1174: 零起点学算法81——求整数绝对值

    2022年3月2日
    46
  • 解决Qt程序在Linux下无法输入中文的办法

    解决Qt程序在Linux下无法输入中文的办法

    2021年12月10日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号