返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >SQL Server2019数据库之简单子查询的具有方法
  • 837
分享到

SQL Server2019数据库之简单子查询的具有方法

2024-04-02 19:04:59 837人浏览 安东尼
摘要

子查询可以完成 SQL 查询中比较复杂的情况,本章主要介绍一些子查询的简单用法。 一、简单子查询 1、简单子查询 子查询是 SELECT 语句内的另外一条 SELECT 语句

子查询可以完成 SQL 查询中比较复杂的情况,本章主要介绍一些子查询的简单用法。

一、简单子查询

1、简单子查询

子查询是 SELECT 语句内的另外一条 SELECT 语句。通常,语句内可以出现表达式的地方都可以使用子查询。另外,子查询可以从任何表中提取数据,只要对该表有适当的访问权限即可。因此,通过在一个查询内或者在另一个子查询内嵌套子查询,可以从两个或多个表中组合信息而不必编写复杂的整个组合表,然后再过滤掉多余的或不相关的联合行的JOIN语句。

子查询的语法与普通的 SELECT 查询的语法相同,子查询可以包含联合、WHERE 子句、HAVING 子句和 GROUP BY子句。

1.1 子查询的语法

子查询的语法如下:


(SELECT [ALL | DISTINCT]<select item list>
FROM <table list>
[WHERE<search condition>]
[GROUP BY <group item list>
[HAVING <group by search condition>]])

语法规则:

  • 子查询的 SELECT 查询必须使用圆括号括起来。
  • 不能包括 COMPUTE 或 FOR BROWSE 子句。
  • 如果同时指定 TOP 子句,则可能只包括 ORDER BY 子句。
  • 子查询最多可以嵌套 32 层。
  • 任何可以使用表达式的地方都可以使用子查询,只要它返回的是单个值。
  • 如果某个表只出现在子查询中而不出现在外部查询中,那么该表中的列就无法包含在输出中。

1.2 子查询常用的语法格式

(1) 第一种语法格式


WHERE 查询表达式 [NOT] IN(子查询)

(2) 第二种语法格式


WHERE 查询表达式 比较运算符 [ANY|ALL](子查询)

(3) 第三种语法格式


WHERE [NOT] EXISTS(子查询)

1.3 子查询与其他 SELECT语句之间的区别

子查询除了必须在括号中出现以外,与其他 SELECT 语句之间还有以下几点不同。

  • SELECT 语句只能使用那些来自 FROM 子句中的表中的列,子查询不仅可以使用在该子查询的 FROM 子句中的表,而且还可以使用子查询的 FROM 子句中表的任何列。
  • SELECT 语句中的子查询必须返回单一数据列。另外,根据其在查询中的使用方法(如将子查询结果用作包括子查询的 SELECT 子句中的一个数据项),包括子查询的查询可能要求子查询返回单个值(而不是来自单列的多个值)。
  • 子查询不能有 ORDER BY 子句(因为用户看不到返回多个数据值的子查询的结果表,所以对隐藏的中间结果表排序就没有什么意义)。
  • 子查询必须由一个 SELECT 语句组成,也就是不能将多个 sql 语句用 UNION 组合起来作为一个子查询。

2、SELECT 列表中的子查询

子查询是 SELECT 查询内的返回一个值的表达式,就像返回值中的单个列一样。但是,在一个表达式中,子查询必须只返回一条记录,这样的子查询被称为标量子查询(Scalar subquery),也必须被封闭在圆括号内。

【例1】根据图书的作者,获取不同作者编写的图书中价格最高的信息。SQL 语句如下:


SELECT tb_book_author,tb_author_department,
(SELECT MAX(book_price) FROM tb_book 
WHERE tb_book_author.tb_book_author = tb_book.tb_book_author) AS 价格
FROM tb_book_author;

查询结果如下图所示:

在这里插入图片描述

3、比较子查询

在 WHERE 子句中可以使用单行比较运算符来比较某个表达式与子查询的结果,可以使用的比较运算符包括:=、>、>=、<、<=、<>(或!=)等。这些比较运算符都可以连接一个子查询,且在使用 ALL 或者 ANY 修饰的比较运算符连接子查询时,必须保证子查询所返回的结果集合中只有单行数据,否则将引起查询错误。

【例2】应用比较运算符 >,查询商品信息表 Goods 中 cat_id 的值大于品牌表 brand 中品牌名称为 蓝月亮 的商品信息。SQL 语句如下:


SELECT cat_id, goods_name
FROM goods
WHERE cat_id>(SELECT cat_id FROM brand WHERE name='蓝月亮');

查询结果如下图所示:

在这里插入图片描述

由于子查询只能返回一个值,因此,如果子查询的结果不是返回单个值,那么系统就会发出错误信息。


SELECT cat_id, goods_name
FROM goods
WHERE cat_id>(SELECT * FROM brand WHERE name='蓝月亮');

执行该 SQL 语句,如下图所示:

在这里插入图片描述

子查询中不能包含 ORDER BY 子句,看下面的 SQL 语句:


SELECT cat_id, goods_name
FROM goods
WHERE cat_id>(SELECT cat_id FROM brand WHERE name='蓝月亮' ORDER BY cat_id);

执行该 SQL 语句,如下图所示:

在这里插入图片描述

4、子查询中使用聚合函数

聚合函数 SUM()、COUNT()、MAX()、MIN() 和 AVG() 都返回单个值。在子查询中应用聚合函数,并将该函数返回的结果应用到 WHERE 子句的查询条件中。

【例3】应用聚合函数 AVG(求 emp 员工表中员工的平均工资,并将结果作为 WHERE 子句的查询条件,通过 SQL 语句获取工资大于平均工资的员工信息。SQL 语句如下:


SELECT ename, sal, job
FROM emp
WHERE sal > (SELECT AVG(sal) FROM emp);

查询结果如下图所示:

在这里插入图片描述

小结:本章讲解了子查询的简单用法。子查询是 SELECT 语句内的另外一条 SELECT 语句,也被称为 SQL 查询的嵌套。在实际开发中,一条 SQL 语句中不要嵌套太多子查询,否则会降低系统效率,影响代码的可读性。

到此这篇关于SQL Server2019数据库之简单子查询的具有方法的文章就介绍到这了,更多相关SQL Server2019子查询内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: SQL Server2019数据库之简单子查询的具有方法

本文链接: https://lsjlt.com/news/124635.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • SQL Server2019数据库之简单子查询的具有方法
    子查询可以完成 SQL 查询中比较复杂的情况,本章主要介绍一些子查询的简单用法。 一、简单子查询 1、简单子查询 子查询是 SELECT 语句内的另外一条 SELECT 语句...
    99+
    2024-04-02
  • Android SQL数据库查询方法query( )的用法
    本篇内容主要讲解“Android SQL数据库查询方法query( )的用法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android SQL数据库查询方法query( )的用法”吧!首先我们...
    99+
    2023-06-02
  • 用python操作mysql数据库(之简单查询操作)
    1、mysql安装    此处省略一万字.......2、pip安装MySQLdb模块sudo pip install mysql-python3、简单代码#!/us...
    99+
    2024-04-02
  • Mysql数据库理论基础之五--SELECT单多表查询、子查询、别名
    一、简介由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点:1、是一种数据库管理系统2、是一种关联数据库管理系统3、是一种开放源码软件,且有大量可用的共享MySQL软件4、MySQ...
    99+
    2024-04-02
  • mysql数据库实现单表查询的方法
    这期内容当中小编将会给大家带来有关mysql数据库实现单表查询的方法,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。数据库单表查询的方法:1、select查询操作...
    99+
    2024-04-02
  • 数据库查询优化之子查询优化的示例分析
    这篇文章将为大家详细讲解有关数据库查询优化之子查询优化的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1. 案例取所有不为掌门人的员工,按年龄分组!selec&#...
    99+
    2024-04-02
  • mysql数据库子查询的实例用法
    本篇内容介绍了“mysql数据库子查询的实例用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!#查询和Zl...
    99+
    2024-04-02
  • sql数据库多表查询的方法是什么
    在SQL中,可以通过使用JOIN关键字来进行多表查询。JOIN操作允许将多个表连接起来,根据表之间的关系进行数据的检索和过滤。常见的...
    99+
    2023-10-08
    sql数据库
  • 有哪些方法可以优化SQL Server数据库查询
    本篇内容介绍了“有哪些方法可以优化SQL Server数据库查询”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所...
    99+
    2024-04-02
  • thinkphp5查询数据库的方法有哪些
    本篇内容介绍了“thinkphp5查询数据库的方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、使用模型进行查询模型是利用Thin...
    99+
    2023-07-06
  • sqlite数据库查询的方法有哪些
    sqlite数据库查询的方法主要有以下几种: SELECT语句:用于从数据库中检索数据。可以使用条件和排序来过滤和排序数据。 ...
    99+
    2024-04-09
    sqlite
  • 学习python之编写简单简单连接数据库并执行查询操作
    python 连接数据库操作, 方法如下: 在本机的mysql 数据库中有一个名为yao的库,其中有一个名为user的表,表中的内容如图 下面,则是python连接数据库的方法,及查找出表中的内容,代码如...
    99+
    2022-06-04
    简单 连接数据库 操作
  • navicat查询数据库的方法
    小编给大家分享一下navicat查询数据库的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在Navicat的选项卡中点击【查...
    99+
    2024-04-02
  • sql怎么查询数据库的所有表
    查询所有数据库表的步骤:连接目标数据库。执行查询:select table_name from information_schema.tables where tab...
    99+
    2024-06-03
    mysql
  • sql怎么查询数据库中所有的表
    查询数据库中所有表的命令因 dbms 而异,以下是三种常见 dbms 的命令:mysql:show tables;postgresql:select * from pg_cat...
    99+
    2024-06-03
    mysql
  • 用一条SQL语句查询不同数据库的方法
    小编给大家分享一下用一条SQL语句查询不同数据库的方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!需求:一条SQL语句从多个数...
    99+
    2024-04-02
  • Navicat数据库删除查询数据的方法
    这篇文章给大家分享的是有关Navicat数据库删除查询数据的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。如果想使用navicat删除查询出来的数据,可以直接将查询的sele...
    99+
    2024-04-02
  • mongodb数据库查询操作方法有哪些
    MongoDB数据库的查询操作方法有以下几种:1. find():用于从集合中查找文档。可以通过指定查询条件来筛选文档,并可以使用投...
    99+
    2023-09-04
    mongodb数据库
  • sqlserver:查询数据库大小的方法
    --总部要求每一个月,获取一次ERP数据库增长大小。 --原文出处:http://www.jb51.net/article/30993.htm SELECT DB_NAME(databas...
    99+
    2024-04-02
  • mysql查询数据库大小的方法
    这篇文章主要介绍了mysql查询数据库大小的方法,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。mysql查询数据库的大小的方法:1、查询整个库的...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作