mysqlfrom(MySQLfrom语句)

## MySQL FROM 子句详解

简介

`FROM` 子句是 SQL 查询语句中最基础的部分之一。它指定了查询的数据源,可以是一个或多个表、视图、派生表,甚至是它们的连接。`FROM` 子句决定了后续`SELECT`、`WHERE`、`GROUP BY` 等子句操作的对象。理解`FROM`子句的工作原理对于编写高效、正确的 SQL 查询至关重要。### 单表查询最简单的 `FROM` 子句只涉及一个表。例如:```sql SELECT

FROM employees; ```这条语句查询名为 `employees` 的表中的所有列和所有行。### 多表查询:连接`FROM` 子句的强大之处在于它能够连接多个表,从而检索关联数据。连接操作有多种类型,包括:#### 内连接 (INNER JOIN)内连接返回两个表中匹配的行。只有当连接条件在两个表中都满足时,才会返回结果。```sql SELECT employees.name, departments.department_name FROM employees INNER JOIN departments ON employees.department_id = departments.id; ```这个例子连接了 `employees` 表和 `departments` 表,连接条件是 `employees.department_id` 等于 `departments.id`。它返回员工姓名和他们所属部门的名称。#### 左连接 (LEFT JOIN)左连接返回左表中的所有行,以及右表中匹配的行。如果左表中的某一行在右表中没有匹配的行,则右表相关的列将返回 `NULL`。```sql SELECT customers.name, orders.order_date FROM customers LEFT JOIN orders ON customers.id = orders.customer_id; ```这个例子返回所有客户的姓名以及他们的订单日期。即使某个客户没有下过订单,也会返回该客户的姓名,但订单日期为 `NULL`。#### 右连接 (RIGHT JOIN)右连接与左连接类似,但返回右表中的所有行和左表中匹配的行。```sql SELECT products.name, order_items.quantity FROM products RIGHT JOIN order_items ON products.id = order_items.product_id; ```这个例子返回所有订单项以及对应的产品名称。即使某个产品没有出现在任何订单项中,也会返回该产品的名称,但数量为 `NULL`。#### 全外连接 (FULL OUTER JOIN)全外连接返回左表和右表的所有行。如果某一行在另一个表中没有匹配的行,则另一个表相关的列将返回 `NULL`。MySQL 不直接支持 `FULL OUTER JOIN`,可以使用 `LEFT JOIN` 和 `RIGHT JOIN` 的 `UNION` 来实现。```sql SELECT

FROM t1 LEFT JOIN t2 ON t1.id = t2.id UNION SELECT

FROM t1 RIGHT JOIN t2 ON t1.id = t2.id; ```#### 交叉连接 (CROSS JOIN)交叉连接返回两个表的笛卡尔积,也就是将第一个表的每一行与第二个表的每一行组合起来。```sql SELECT colors.color, sizes.size FROM colors CROSS JOIN sizes; ```如果 `colors` 表有 3 行,`sizes` 表有 2 行,则结果集将有 3

2 = 6 行。### 子查询`FROM` 子句还可以包含子查询,将子查询的结果作为临时表进行查询。```sql SELECT

FROM (SELECT id, name FROM employees WHERE department_id = 10) AS department_10_employees; ```这个例子先查询 `department_id` 为 10 的员工,然后将结果作为名为 `department_10_employees` 的临时表进行查询。### 别名可以使用 `AS` 关键字为表或子查询指定别名,简化查询语句并提高可读性。```sql SELECT e.name, d.department_name FROM employees AS e INNER JOIN departments AS d ON e.department_id = d.id; ```

总结

`FROM` 子句是 SQL 查询的核心组成部分,它定义了数据源并支持多种连接方式,允许我们从单个或多个表中检索和组合数据。熟练掌握 `FROM` 子句的用法对于编写复杂且高效的 SQL 查询至关重要。

MySQL FROM 子句详解**简介**`FROM` 子句是 SQL 查询语句中最基础的部分之一。它指定了查询的数据源,可以是一个或多个表、视图、派生表,甚至是它们的连接。`FROM` 子句决定了后续`SELECT`、`WHERE`、`GROUP BY` 等子句操作的对象。理解`FROM`子句的工作原理对于编写高效、正确的 SQL 查询至关重要。

单表查询最简单的 `FROM` 子句只涉及一个表。例如:```sql SELECT * FROM employees; ```这条语句查询名为 `employees` 的表中的所有列和所有行。

多表查询:连接`FROM` 子句的强大之处在于它能够连接多个表,从而检索关联数据。连接操作有多种类型,包括:

内连接 (INNER JOIN)内连接返回两个表中匹配的行。只有当连接条件在两个表中都满足时,才会返回结果。```sql SELECT employees.name, departments.department_name FROM employees INNER JOIN departments ON employees.department_id = departments.id; ```这个例子连接了 `employees` 表和 `departments` 表,连接条件是 `employees.department_id` 等于 `departments.id`。它返回员工姓名和他们所属部门的名称。

左连接 (LEFT JOIN)左连接返回左表中的所有行,以及右表中匹配的行。如果左表中的某一行在右表中没有匹配的行,则右表相关的列将返回 `NULL`。```sql SELECT customers.name, orders.order_date FROM customers LEFT JOIN orders ON customers.id = orders.customer_id; ```这个例子返回所有客户的姓名以及他们的订单日期。即使某个客户没有下过订单,也会返回该客户的姓名,但订单日期为 `NULL`。

右连接 (RIGHT JOIN)右连接与左连接类似,但返回右表中的所有行和左表中匹配的行。```sql SELECT products.name, order_items.quantity FROM products RIGHT JOIN order_items ON products.id = order_items.product_id; ```这个例子返回所有订单项以及对应的产品名称。即使某个产品没有出现在任何订单项中,也会返回该产品的名称,但数量为 `NULL`。

全外连接 (FULL OUTER JOIN)全外连接返回左表和右表的所有行。如果某一行在另一个表中没有匹配的行,则另一个表相关的列将返回 `NULL`。MySQL 不直接支持 `FULL OUTER JOIN`,可以使用 `LEFT JOIN` 和 `RIGHT JOIN` 的 `UNION` 来实现。```sql SELECT * FROM t1 LEFT JOIN t2 ON t1.id = t2.id UNION SELECT * FROM t1 RIGHT JOIN t2 ON t1.id = t2.id; ```

交叉连接 (CROSS JOIN)交叉连接返回两个表的笛卡尔积,也就是将第一个表的每一行与第二个表的每一行组合起来。```sql SELECT colors.color, sizes.size FROM colors CROSS JOIN sizes; ```如果 `colors` 表有 3 行,`sizes` 表有 2 行,则结果集将有 3 * 2 = 6 行。

子查询`FROM` 子句还可以包含子查询,将子查询的结果作为临时表进行查询。```sql SELECT * FROM (SELECT id, name FROM employees WHERE department_id = 10) AS department_10_employees; ```这个例子先查询 `department_id` 为 10 的员工,然后将结果作为名为 `department_10_employees` 的临时表进行查询。

别名可以使用 `AS` 关键字为表或子查询指定别名,简化查询语句并提高可读性。```sql SELECT e.name, d.department_name FROM employees AS e INNER JOIN departments AS d ON e.department_id = d.id; ```**总结**`FROM` 子句是 SQL 查询的核心组成部分,它定义了数据源并支持多种连接方式,允许我们从单个或多个表中检索和组合数据。熟练掌握 `FROM` 子句的用法对于编写复杂且高效的 SQL 查询至关重要。

Powered By Z-BlogPHP 1.7.2

备案号:蜀ICP备2023005218号