介绍
想象一下,搜索一个庞大的图书馆,里面包含包含嵌套书籍的书籍。要查找特定信息,您可能需要先咨询较小的书籍,然后使用该信息来找到较大的书籍。这说明了SQL中嵌套查询的概念。这些查询嵌入了另一个查询,简化了复杂数据的提取。本指南探讨了嵌套的查询功能,并演示了其在高效数据库管理中的应用。
关键学习目标
- 掌握SQL中嵌套查询(子查询)的概念。
- 在各种SQL语句中构建和实现嵌套查询。
- 区分相关和非相关的嵌套查询。
- 使用嵌套结构优化SQL查询以增强性能。
目录
- 了解SQL中的嵌套查询
- 探索SQL中的嵌套查询类型
- 嵌套查询的实际应用
- 避免常见的嵌套查询陷阱
- 常见问题
了解SQL中的嵌套查询
嵌套查询(也称为子查询)是嵌入另一个的SQL查询。内部查询的输出可为外部查询提供信息,从而实现复杂的数据检索。当内部查询的结果取决于外部查询的数据时,这尤其有价值。
基本语法
选择column_name(s) 来自table_name 其中column_name =(从table_name中select column_name whinge column_name);
探索SQL中的嵌套查询类型
嵌套查询(子查询)通过将一个SQL查询嵌入另一个SQL查询来促进复杂的数据检索。这对于编写高效且复杂的SQL代码至关重要。本节详细介绍了各种嵌套查询类型,其中包括示例和预期输出。
SQL中的单行子
单行子查询在一行中产生一个或多个列。它经常与单个值相比操作员(=,>,>, =,
定义单行子征服的特征
- 单行输出:产生单行数据。
- 比较操作员:通常与比较操作员一起使用。
- 可能的多列:可以在该行中返回多个列。
示例:确定收入高于平均工资的员工
表:员工
员工_id | 名 | 姓 | 薪水 | dectment_id |
---|---|---|---|---|
1 | 约翰 | 母鹿 | 90000 | 1 |
2 | 简 | 史密斯 | 95000 | 1 |
3 | 爱丽丝 | 约翰逊 | 60000 | 2 |
4 | 鲍勃 | 棕色的 | 65000 | 2 |
5 | 查理 | 戴维斯 | 40000 | 3 |
6 | 前夕 | 亚当斯 | 75000 | 3 |
表:部门
dectment_id | Deppys_name | location_id |
---|---|---|
1 | 销售量 | 1700 |
2 | 营销 | 1700 |
3 | 它 | 1800 |
4 | 人力资源 | 1900 |
选择first_name,last_name,薪水 来自员工 薪金>(从员工中选择AVG(薪水));
输出:
<code>| first_name | last_name | salary | |------------|-----------|--------| | John | Doe | 90000 | | Jane | Smith | 95000 |</code>
内部查询计算平均工资。然后,外部查询选择收入高于此平均值的员工。
SQL中的多排子
多行子Queries返回多行。它们通常与IN
, ANY
或ALL
操作员一起使用,以将列与一组值进行比较。
示例:从特定部门检索员工
选择first_name,last_name 来自员工 wery dectorment_id in(从部门seless_id select dections_id location_id = 1700);
输出:
<code>| first_name | last_name | |------------|-----------| | John | Doe | | Jane | Smith |</code>
内部查询从特定位置选择部门ID。然后,外部查询将检索在这些部门工作的员工。
SQL中的相关子征
相关的子查询取决于其值的外部查询。与独立的子查询不同,它对外部查询处理的每一行动态执行。
相关亚征的特征
- 对外部查询的依赖性:外部查询的内部查询引用列。
- 行执行:内部查询在外部查询中每行一次反复运行。
- 绩效影响:重复执行会影响大型数据集的性能。
示例:确定赚取比部门平均水平更多的员工
选择first_name,薪水 来自员工E1 薪金>(从员工e2中选择AVG(薪金)e1.department_id = e2.department_id);
输出:(输出将取决于employees
表中的数据)
相对于外部查询处理的员工,内部查询计算每个部门的平均工资。
SQL中的嵌套子征
嵌套的子征需要嵌入一个子查询,从而创建一个分层的结构。这允许复杂的数据操作和过滤。
嵌套亚征的结构
- 外部查询:包含嵌套子查询的主查询。
- 内部查询(IES):外部查询中嵌入的子查询。
示例:确定员工收入高于平均水平的部门
SELECT DEMPLECT_ID,DEMPLECT_NAME 来自部门 departode_id in(in 选择dections_id 来自员工 薪金>(从员工中选择AVG(薪水)) );
输出:(输出将取决于employees
和departments
表中的数据)
标量亚征
标量子查询返回一个值(一行,一列)。在主查询中需要一个值的地方,它很有用。
标量亚征的特征
- 单值返回:仅返回一个值。
-
各种条款用法:可以在
SELECT
,WHERE
和HAVING
从句中使用。 - 有效的比较:与单个派生值的比较有用。
示例:员工薪水与平均水平相比
选择first_name,last_name,工资 - (从员工中选择AVG(薪金))作为salary_difference 来自员工;
输出:(输出将取决于employees
表中的数据)
嵌套查询的实际应用
嵌套查询对于各种复杂的数据检索方案很有价值:
基于派生值的数据过滤
嵌套查询根据从另一个表中计算出的值有效过滤数据。
汇总计算
在嵌套查询中计算出的聚集物(例如,avg,sum,count)可以在外部查询中用于条件过滤。
有条件的逻辑实现
嵌套查询提供了将条件逻辑纳入SQL语句中的机制。
与相关子查询的行级计算
相关的子查询基于外部查询中的当前行启用行级计算。
避免常见的嵌套查询陷阱
虽然强大的嵌套查询可能会引入问题:
标量子征中多个行返回
标量子查询必须返回单个值;多行将导致错误。
性能退化
嵌套查询,特别是相关的查询可能会显着影响性能,尤其是在大型数据集的情况下。考虑加入等替代方法。
括号放错了位置
不正确的括号会导致逻辑错误和意外结果。
零值处理
仔细考虑如何处理零值,以避免意外过滤。
结论
SQL嵌套查询(子查询)是有效复杂数据检索的强大工具。了解不同类型的类型(多行,多行,相关和标量)对于有效的数据库管理至关重要。通过遵循最佳实践并避免常见的陷阱,您可以利用嵌套查询来增强您的SQL技能并优化数据库性能。
常见问题
Q1。 SQL中的嵌套查询是什么?
嵌套查询或子查询是嵌入在另一个查询中的SQL查询。外部查询使用内部查询的结果来执行复杂的数据检索。
Q2。嵌套查询的类型是什么?
主要类型是单行,多行,相关和标量子量,每种都适合不同的任务。
Q3。我什么时候应该使用相关的子查询?
当内部查询需要从外部查询中引用一列以进行动态,行处理时,请使用相关的子查询。
Q4。嵌套查询会影响性能吗?
是的,嵌套的查询,尤其是相关的查询可能会严重影响性能。通过分析查询计划并考虑加入等替代方案来进行优化。
以上是SQL中的嵌套查询的详细内容。更多信息请关注PHP中文网其他相关文章!

自2008年以来,我一直倡导这辆共享乘车面包车,即后来被称为“ Robotjitney”,后来是“ Vansit”,这是城市运输的未来。 我预见这些车辆是21世纪的下一代过境解决方案Surpas

革新结帐体验 Sam's Club的创新性“ Just Go”系统建立在其现有的AI驱动“扫描和GO”技术的基础上,使会员可以在购物旅行期间通过Sam's Club应用程序进行扫描。

NVIDIA在GTC 2025上的增强可预测性和新产品阵容 NVIDIA是AI基础架构的关键参与者,正在专注于提高其客户的可预测性。 这涉及一致的产品交付,达到绩效期望以及

Google的Gemma 2:强大,高效的语言模型 Google的Gemma语言模型家族以效率和性能而庆祝,随着Gemma 2的到来而扩展。此最新版本包括两种模型:270亿个参数VER

这一领先的数据剧集以数据科学家,天体物理学家和TEDX演讲者Kirk Borne博士为特色。 Borne博士是大数据,AI和机器学习的著名专家,为当前状态和未来的Traje提供了宝贵的见解

这次演讲中出现了一些非常有见地的观点——关于工程学的背景信息,这些信息向我们展示了为什么人工智能如此擅长支持人们的体育锻炼。 我将从每位贡献者的观点中概括出一个核心思想,以展示三个设计方面,这些方面是我们探索人工智能在体育运动中应用的重要组成部分。 边缘设备和原始个人数据 关于人工智能的这个想法实际上包含两个组成部分——一个与我们放置大型语言模型的位置有关,另一个与我们人类语言和我们的生命体征在实时测量时“表达”的语言之间的差异有关。 Alexander Amini 对跑步和网球都很了解,但他还

卡特彼勒(Caterpillar)的首席信息官兼高级副总裁杰米·恩格斯特(Jamie Engstrom)领导了一支由28个国家 /地区的2200多名IT专业人员组成的全球团队。 在卡特彼勒(Caterpillar)工作了26年,其中包括她目前的四年半,Engst

Google Photos的新Ultra HDR工具:快速指南 使用Google Photos的新型Ultra HDR工具增强照片,将标准图像转换为充满活力的高动态范围杰作。对于社交媒体而言,此工具可提高任何照片的影响,


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

SublimeText3 Linux新版
SublimeText3 Linux最新版

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

禅工作室 13.0.1
功能强大的PHP集成开发环境

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。