热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

SQL编程之子查询及注意事项

这篇文章主要介绍了SQL编程之子查询及注意事项,需要的朋友可以参考下

当一个查询是另一个查询的条件时,称之为子查询。子查 询可以使用几个简单命令构造功能强大的复合命令。子查询最常用于SELECT-SQL命令的 WHERE子句中。子查询是一个 SELECT 语句,它嵌套在一个 SELECT、SELECT...INTO 语句、INSERT...INTO 语句、DELETE 语句、或 UPDATE 语句或嵌套在另一子查询中。

语法:select ....from 表1 where 列1 > (子查询)

外面的查询成为父查询,圆括号嵌入的查询成为称为子查询。SQL Server 执行时,先执行子查询部分,求出子查询部分的值,再执行整个父查询,返回最后的结果。

查看多表的数据也可使用表连接,表连接(join on...),表连接都可用子查询替换,但有的子查询不能用表连接替换,子查询比较灵活,方便,形式多样,适合于作为查询的筛选条件。

例如:

结果为:

1、In 和 Not In子查询

1> 如果你的子查询将返回多个数据行,你可以用IN和NOT IN操作符来构造主查询的检索条件。IN和NOT IN操作符的用途是测试一个给定的比较值有没有出现在一个特定的集合里。只要主查询里的数据行与子查询所返回的任何一个数据行匹配,IN操作符的比较结果 就将是true。如果主查询里的数据行与子查询所返回的所有数据行都不匹配,NOT IN操作符的比较结果将是true。

例如:

SELECT * FROM student WHERE student_id IN (SELECT student_id FROM absence); name | sex | student_id |

+-------+-----+------------+

| Kyle | M | 3 |

| Abby | F | 5 |

2>IN和NOT IN操作符还可以用在将返回多个数据列的子查询里。换句话说,你可以在数据表子查询里使用它们。此时,你需要使用一个数据行构造器来给出将与各数据列比较的比较值。

例 如:

SELECT last_name, first_name, city, state FROM president WHERE (city, state) IN (SELECT city, state FROM president WHERE last_name = 'Roosevelt'); +-----------+-------------+-----------+-------+

| last_name | first_name | city | state |

+-----------+-------------+-----------+-------+

| Roosevelt | Theodore | New York | NY |

| Roosevelt | Franklin D. | Hyde Park | NY |

+-----------+-------------+-----------+-------+

2、Exists 和 Not Exists 子查询

Exists可以检测数据是否存在。如果子查询的结果非空,则Exists(子查询)将返回真(true),否则返回假(false)。

If Exists (子查询) 语句

Exists 和 In 一样,同样允许添加Not关键字实现取反操作,Not Exists 表示不存在。

3.子查询的注意事项

<1>使用子查询的原则

1.一个子查询必须放在圆括号中。

2.将子查询放在比较条件的右边以增加可读性。

子查询不包含 ORDER BY 子句。对一个 SELECT 语句只能用一个 ORDER BY 子句,

并且如果指定了它就必须放在主 SELECT 语句的最后。

ORDER BY 子句可以使用,并且在进行 Top-N 分析时是必须的。

3.在子查询中可以使用两种比较条件:单行运算符和多行运算符。

<2>子查询的类型

单行子查询:从内 SELECT 语句只返回一行的查询

多行子查询:从内 SELECT 语句返回多行的查询

<3>单行子查询

单行子查询是从内查询返回一行的查询。在该子查询类型中用一个单行操作符。幻灯片中列出了单行操作符。

4.查询的方法:<1>联合:合并多个数据集中的行 <2>子查询:将一个查询嵌套在另一个查询中 <3>连接:合并多个数据表中的列

5.什么是相关子查询&#63;

相关子查询依赖于外部查询。外部查询和SQL Server子查询是有联系的,尤其在子查询的WHERE语句中更是如此。相关子查询的工作方式是:在子查询中找到外部查询的参考时执行外部查询,此时将结果返回给子查询。然后在外部查询返回的结果集上执行子查询操作。

相关子查询的执行性能:由于相关子查询中的子查询在外部查询返回的结果集上进行执行,其效率肯定下降。子查询的性能完全依赖于查询和有关的数据。但是,如果相关子查询的语句写得很有效率,则其执行性能能够胜过那些使用几个连接和临时表的程序。

大家通过以上内容是不是对SQL编程的子查询有了一些了解,希望大家可以有所收获。


推荐阅读
  • 本文提供了一组示例表,并探讨了如何通过SQL查询来计算父记录及其子记录的总金额。 ... [详细]
  • BME框架使用中的典型问题解析
    本文主要探讨了BME框架在实际应用中遇到的一些常见问题,包括查询条件为空、动态参数处理及分页查询等场景的解决方案。 ... [详细]
  • 使用Docker部署Gitea自托管Git服务
    Gitea是由Gogs社区分叉而来的开源自托管Git服务,旨在提供一个更加灵活和易于维护的解决方案。本文将详细介绍如何利用Docker容器技术快速部署Gitea。 ... [详细]
  • Oracle 数据库提供了自动化文件管理(OFM)的功能,允许用户通过设置特定参数来简化数据文件和日志文件的创建过程。当配置了 db_create_file_dest 和 db_create_online_log_dest_n 参数后,系统能够自动处理文件的创建与删除。 ... [详细]
  • 本文档整理了公司内部常用的网站链接和重要资源路径,包括部门周报、内控报销系统、邮件服务等,同时提供了相关数据库的登录信息。 ... [详细]
  • 深入理解Hibernate延迟加载机制
    本文探讨了Hibernate框架中的延迟加载(懒加载)特性,分析其对程序性能的影响及实现原理,同时提供了具体的代码示例来说明如何配置和使用延迟加载。 ... [详细]
  • 1、服务器配置信息① 主服务器IP:192.168.1.2② 从服务器IP:192.168.1.3③ 操作系统:主服务器:Win8,从服务器࿱ ... [详细]
  • 睿智汇海教育致力于培养杰出的IT专业人才,确保学员在就业市场上具备竞争力,助其实现职业成功。我们提供的C#/.Net/Asp.Net培训课程,旨在通过系统的教学和丰富的实践机会,帮助学员掌握最新的技术知识。 ... [详细]
  • 统一幻灯片标题:使用母版功能的技巧
    本文详细介绍了如何通过PowerPoint中的幻灯片母版功能,实现所有幻灯片标题的一致性设置。同时,提供了其他办公软件和编程相关的实用技巧。 ... [详细]
  • MySQL 5.7 绿色版安装及 my.ini 配置详解
    本文主要针对最近因系统重装导致的MySQL配置问题,详细介绍了MySQL 5.7.24绿色解压版的安装步骤及my.ini配置文件的关键设置,帮助用户顺利完成数据库的安装与配置。 ... [详细]
  • 本文介绍如何利用JavaScript在页面加载时为ASP.NET的DropDownList控件设置特定的选项值。 ... [详细]
  • MyBatis入门指南
    本文详细介绍了MyBatis的基础知识,包括如何整合日志框架(如log4j和logback),使用外部JDBC文件,getMapper()方法的应用,以及别名设置等技巧。 ... [详细]
  • 在使用 SQL 语句从数据库中提取数据并尝试将其转换为其他数据类型时,可能会遇到 'java.math.BigDecimal cannot be cast to java.lang.Integer' 错误。本文将详细解释这一错误的原因,并提供有效的解决方案。 ... [详细]
  • 本文探讨了如何利用脚本文件高效管理Oracle数据库,包括脚本文件的创建、编辑及运行方法,旨在为数据库管理人员提供实用指导。 ... [详细]
  • 使用H5在前端生成Excel文件的方法
    本文介绍了一种利用HTML5和JavaScript库在浏览器端直接生成并下载Excel文件的技术方案。通过引入alasql.js和xlsx.core.min.js两个库,可以轻松实现数据导出功能。 ... [详细]
author-avatar
亲爱one
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有