温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

在SQL中怎么使用SQL子查询

发布时间:2022-03-01 10:50:36 来源:亿速云 阅读:176 作者:小新 栏目:开发技术

这篇文章主要介绍了在SQL中怎么使用SQL子查询,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

什么是子查询?

子查询是嵌套在另一个 SQL 查询中的 SQL 查询。它们帮助查询为WHERE子句创建条件以过滤行并对它们执行操作。子查询可以使用SELECT,INSERT,UPDATE,和DELETE语句。

WHERE 子句中的子查询示例

我们希望在交易金额大于 1,000 元的数据库中获取用户。对于我们的示例,我们将有两个表,分别是users和transactions存储用户和交易信息。

在SQL中怎么使用SQL子查询

我们可以编写一个查询,从transactions表中提取金额超过 1,000 美元的所有行,然后将其用作另一个查询的条件,该查询将users根据第一个查询的结果从表中提取行。

查询将如下所示:

SELECT *
FROM users
WHERE id IN
    (SELECT user_id
     FROM transactions
     WHERE amount > 1000);

子查询的优点

  • 与连接相比,子查询通过将它们构建为独立的部分来提高查询可读性。

  • 易于理解和维护子查询。

  • 子查询可以替代复杂的连接和联合。

子查询的缺点

  • 子查询不能在同一个 SQL 语句中修改一个表并从同一个表中进行选择。

  • 子查询是一项开销很大的任务,因此使用连接操作会更快。

运行子查询练习

我们将探索一些使用 Arctype 的示例,我们将在其中展示子查询并了解它们是如何在应用程序中构建和使用的。

我们需要创建一个我们将在本教程中使用的数据库。为方便起见,我创建了一个包含 SQL 文件的GitHub Gist,用于构建我们的数据库模式并将虚拟数据插入其中。要使用它,我们需要执行以下操作:

  • 使用 Arctype 连接到我们的数据库。

  • 导航到 Arctype 中的查询选项卡并创建一个新查询。

  • 粘贴并运行Gist 中的create.sql 文件以创建模式。

  • 再次导航到查询选项卡以创建新查询。

  • 粘贴并运行Gist 中的insert.sql 文件,用虚拟数据填充数据库。

使用子查询选择数据

让我们编写一个查询来从BUYER表中引用的SKU_DATA表中选择所有行。在 Arctype 中创建一个新查询并执行以下代码:

SELECT *
FROM BUYER
WHERE BuyerName IN
    (SELECT BUYER
     FROM SKU_DATA);

在上面的代码中,我们创建了一个内部查询,该查询BUYER从SKU_DATA表中选择列,然后使用它作为条件从BUYER表中选择具有相同BuyerName列值的行。

使用子查询更新数据

让我们编写一个查询,将2016 年销售的所有商品Price的ORDER_ITEM表中列的值增加10%。在 Arctype 中创建一个新查询并执行以下代码:

UPDATE ORDER_ITEM
SET Price=Price*1.1
WHERE SKU IN
    (SELECT SKU
     FROM CATALOG_SKU_2016);

在上面的代码中,我们创建了一个内部查询,它SKU从CATALOG_SKU_2016表中选择列来过滤我们应该在ORDER_ITEM表中更新的行。

使用子查询删除数据

我们将编写一个子查询,从INVENTORY存储在小于 130,000 平方英尺的仓库中的表中删除所有记录。查询将如下所示:

DELETE
FROM INVENTORY
WHERE WarehouseID IN
    (SELECT WarehouseID
     FROM WAREHOUSE
     WHERE SquareFeet < 130000);

使用嵌套子查询

也可以在另一个子查询中包含子查询。下面是一个例子:

SELECT *
FROM CATALOG_SKU_2017
WHERE SKU IN
    (
        SELECT SKU
        FROM INVENTORY
        WHERE WarehouseID IN
        (
            SELECT WarehouseID
            FROM WAREHOUSE
            WHERE SquareFeet > 130000
        )
    );

感谢你能够认真阅读完这篇文章,希望小编分享的“在SQL中怎么使用SQL子查询”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

sql
AI