SQL语言的数据查询之嵌套查询
3. 嵌套查询
在SQL语言中,一个SELECT-FROM-WHERE语句被称为一个查询块。将一个查询块嵌套在另外一个查询块的WHERE子句或者HAVING短语的条件中的查询被称为嵌套查询。上层的查询块称为外层查询或父查询,下层的查询被称为内层查询或子查询。
SQL语言允许多层嵌套查询,即一个子查询中还可以嵌套其他子查询。需要特别指出的是,子查询的SELECT语句中不能使用ORDER BY子句,ORDER BY子句只能对最终查询结果排序。
嵌套查询使用用户可以用多个简单查询构成复杂的查询,从而增强SQL的查询能力。以层层嵌套的方式来构造程序正是SQL中“结构化”的含义所在。
(1) 带有IN谓词的子查询
在嵌套查询中,子查询的结果往往是一个集合,所以谓词IN是嵌套查询中最经常使用的谓词。
查询涉及多个关系时,用嵌套查询逐步求解,层次清楚,易于构造,具有结构化程序设计的优点。
子查询的查询条件不依赖于父查询,称为不相关子查询。如果子查询的查询条件依赖于父查询,这类子查询称为相关子查询,整个查询语句称为相关嵌套查询语句。求解相关子查询不能像求解不相关子查询那样,一次将子查询求解出来,然后求解父查询。内层查询由于与外层查询有关,因此必须反复求值。
(2) 带有比较运算符的子查询
带有比较运算符的子查询是指父查询与子查询之间用比较运算符进行连接。当用户能够确切知道内层查询返回的是单值得时,可以用>,<,=,>=,<=,!=和<>等比较运算符。
(3) 带有ANY(SOME)或者ALL谓词的子查询
子查询返回单值时可以用比较运算符,但返回多值时要用ANY(有的系统用SOME)或ALL谓词修饰符。而使用ANY或ALL谓词时则必须同时使用比较运算符。其语义为:
>ANY 大于子查询结果中的某个值
>ALL 大于子查询结果中的所有值
<ANY 小于子查询结果中的某个值
<ALL 小于子查询结果中的所有值
>=ANY 大于等于子查询结果中的某个值
>=ALL 大于等于子查询结果中的所有值
<= 小于等于子查询结果中的某个值
<= 小于等于子查询结果中的所有值
= 等于子查询结果中的某个值
= 等于子查询结果中的所有值
!=(或<>)ANY 不等于子查询结果中的某个值
!=(或<>)ALL 不等于子查询结果中的任何一个值
ANY,ALL与聚集函数的对应关系如下表所示:
(4) 带有EXISTS谓词的子查询
EXISTS代表量词。带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。
可以利用EXISTS来判断X∈S,S∈R,S=R,S∩R非空等是否成立。
SQL语言的数据查询之嵌套查询相关推荐
- 3.4 《数据库系统概论》之数据查询---SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)
文章目录 0.前言 1.思维导图 2.Student/SC/Course表数据及结构 3.SELECT语句的一般格式 4.单表查询 (1)选择表中的若干列 ① 查询指定列 ② 查询全部列 ③ 查询经过 ...
- 笔记:3.4 《数据库系统概论》之数据查询---SELECT(单表查询、连接查询、嵌套查询、集合查询、多表查询)
对 3.2 数据查询-SELECT(单表查询.连接查询.嵌套查询.集合查询.多表查询)的转载与学习笔记: 0.前言 本篇文章是对<数据库系统概论>王珊老师主编的数据库查询SELECT部分做 ...
- 数据库 - 连接查询、嵌套查询、集合查询
连接查询 连接查询:同时涉及多个表的查询 连接条件或连接谓词:用来连接两个表的条件 一般格式: [<表名1>.]<列名1> <比较运算符> [<表名2> ...
- SQL数据查询之——嵌套查询
一.概念描述 在SQL语言中,一个 SELECT-FROM-WHERE 语句称为一个查询块.将一个查询块嵌套在另一个查询块的 WHERE 子句或 HAVING 短语的条件中的查询称为 嵌套查询.例如: ...
- sql镶嵌查询_SQL数据查询之——嵌套查询
一.概念描述 在SQL语言中,一个 SELECT-FROM-WHERE 语句称为一个查询块.将一个查询块嵌套在另一个查询块的 WHERE 子句或 HAVING 短语的条件中的查询称为 嵌套查询.例如: ...
- Database之SQLSever:SQL命令实现查询之多表查询、嵌套查询、分页复杂查询,删除表内重复记录数据、连接(join、left join和right join简介及其区别)等案例之详细攻略
Database之SQLSever:SQL命令实现查询之多表查询.嵌套查询.分页复杂查询,删除表内重复记录数据.连接(join.left join和right join简介及其区别)等案例之详细攻略 ...
- SQL语言(一)数据查询
数据查询 数据查询一般格式为: SELECT [ALL|DISTINCT]<目标列表达式>[,<目标列表达式>]··· FROM<表名或视图名>[,<表名或视 ...
- 数据库SQL语言学习--数据查询(持续更新中)
数据库SQL语言学习--数据查询(持续更新中) 上机练习1 1. 启动SQL Server 2008中的 SQL Server Management Studio. 2. ...
- 05.SQL Server大数据群集小试牛刀--HDFS查询
05.SQL Server大数据群集小试牛刀--HDFS查询 SQL Server大数据群集查询HDFS ,利用之前创建好的大数据群集,使用官方提供的测试数据进行测试.脚本是官方的脚本,要知道干了什么 ...
最新文章
- Spring Security 和 Shiro 该如何选择?
- vue进行判断使用class_vue如何判断dom的class
- 2018-2019-1 20165226 《信息安全系统设计基础》第6周学习总结
- php怎么和数据库通信,php – 如何处理域和数据库层之间的通信?
- Php点击更换封面,JavaScript_js实现点击图片改变页面背景图的方法,本文实例讲述了js实现点击图 - phpStudy...
- visualstudiopython使用方法,使用python解析VisualStudio .csproj文件的最佳方法
- ubuntu 将某个目录下的文件复制到_Ubuntu系统简单美化
- Oracle集成基础安装包+补丁包
- 高级电工、模电、数电、电力拖动实验室成套设备
- Java——javac.exe、java.exe、javaw.exe的区别及Java运行机制
- 鸿蒙系统的特点,鸿蒙系统有什么特别之处
- 【18日】foobox 1.0.1 (foobar2000 CUI配置)
- 安装 Windows 8 跳过密钥的方法
- 蓝桥杯 java 跳马问题
- C#中推荐使用Environment.NewLine
- 计算机平面设计教材,《计算机平面设计软件应用——全国中等职业技术学校计算机教材》低价购书_教材教辅考试_孔网...
- 联想m920t装红旗linux中SPik,联想ThinkCentre M920t台式机装win10系统及bios设置(uefi+gpt)...
- 安装centos7系统 服务器安装系统
- [pysyft-006]联邦学习pysyft从入门到精通--使用protocol
- 天梯赛 L1-021 重要的话说三遍 (5 分) 简单易懂