MySQL 派生表详解

结构化查询语言 (SQL) 是管理和查询关系数据库的强大工具,而 MySQL 是使用最广泛的数据库管理系统之一。

在 MySQL 中,派生表提供了一种灵活且高效的方式来在查询内操作和分析数据。在本文中,我们将深入探讨 MySQL 派生表的概念,探索它们的语法、用例以及限制条件。

在本文中,我们将学习如何使用 MySQL 派生表 来分析动态数据。我们将通过一个实际示例向您展示如何使用它们。了解 MySQL 中管理派生表的重要限制,并学习优化查询策略的最佳实践。

派生表,也称为内联视图或 FROM 子句中的子查询,是在 SQL 查询范围内创建的临时结果表。这些表不会物理存储在数据库中,仅在查询执行期间存在。当我们需要在将数据子集合并到主查询之前对其执行复杂操作时,派生表特别有用。

语法:

使用派生表的基本语法包括将子查询放置在主查询的 FROM 子句中,并为其分配一个别名。然后,外部查询可以通过该别名引用派生表。

> SELECT …… FROM (SUBQUERY) [AS] table_name WHERE Conditions;

这里,括号内的内部查询创建了一个派生表,外部查询可以引用该表或对其应用附加操作。

MySQL 派生表示例

示例 1:美国客户的平均年龄

假设我们有一个 客户表,其数据如下所示

!custable

现在,执行以下语句以了解我们如何使用子查询来形成派生表。

mysql> select AVG(age) from(select first_name,age from Customers where country="USA")

这里,粗体显示的子查询创建了一个包含特定条件的派生表。派生表如下所示

!derivedable

现在,外部查询将在这个新表(即派生表)上执行,我们将获得此派生表中年龄的平均值。整个查询的输出将是

输出:

!output

解释: 使用子查询创建派生表来计算来自美国的客户的平均年龄。首先根据“USA”国家条件选择名字和年龄。这种方法使查询更易于阅读,并允许更有针对性的数据分析。

示例 2:符合条件的订单总金额

为了更好地理解派生表,让我们再看一个订单表的例子,如下所示

!Order-TableOrder Table

现在,要创建一个从订单表派生的表,我们将执行一个带有子查询的查询。

SELECT SUM(amount)
FROM 
(SELECT order_id,item,amount,customer_id FROM Orders
where amount between 270 and 700) 
where amount>=250;

这里,派生表将包含金额在 270 到 700 之间的所有行。!derived-table

以及派生表中金额大于 250 的所有金额的总和,即我们 SQL 查询 的输出将是

输出:

!outputOutput

解释: 此 MySQL 查询展示了使用从“Orders”表派生的表。它计算了一组金额在 270 到 700 之间的订单的总金额。外部查询过滤此表,仅考虑金额大于或小于 250 的行。这种方法允许对特定订单金额进行更精确的分析,提高了查询性能和可读性。

MySQL 中派生表的限制

  • MySQL 中,相关子查询是指引用外部查询列的子查询。相关子查询通常用于根据外部查询的值过滤结果。但是,当我们在 FROM 子句的派生表中使用 相关子查询 时,MySQL 不允许 这样做。
  • 在 FROM 子句的派生表定义中,我们不能直接引用同一 SELECT 语句中的表。每个派生表在它所在的特定 SELECT 语句 范围内独立运行。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/53014.html
点赞
0.00 平均评分 (0% 分数) - 0