MySQL的使用-一、连接查询(JOIN)

1.1 INNER JOIN(内连接)

内连接是最常见的连接查询,它只返回两个表中匹配条件的数据。如果某一行在其中一个表中不存在对应的匹配行,那么该行将不会出现在结果集中。

语法

SELECT columns
FROM table1
INNER JOIN table2 ON table1.column = table2.column;

示例
假设有两个表:

  • orders 表(存储订单信息)
  • customers 表(存储客户信息)

我们希望查询每个订单对应的客户信息:

SELECT orders.order_id, customers.customer_name, orders.order_date
FROM orders
INNER JOIN customers ON orders.customer_id = customers.customer_id;

此查询返回订单和客户的匹配结果,仅显示那些在 orders 表中有订单,并且在 customers 表中有对应客户的记录。


1.2 LEFT JOIN(左连接)

左连接返回左表中的所有行,即使右表中没有匹配的数据,右表中的数据为空(NULL)。

语法

SELECT columns
FROM table1
LEFT JOIN table2 ON table1.column = table2.column;

示例
我们希望查询所有订单,包括那些没有匹配到客户的订单:

SELECT orders.order_id, customers.customer_name, orders.order_date
FROM orders
LEFT JOIN customers ON orders.customer_id = customers.customer_id;

此查询会显示所有订单,即使某些订单的客户信息缺失。


1.3 RIGHT JOIN(右连接)

右连接与左连接相反,它返回右表中的所有行,即使左表中没有匹配的数据。

语法

SELECT columns
FROM table1
RIGHT JOIN table2 ON table1.column = table2.column;

示例
我们希望查询所有客户,包括那些没有下订单的客户:

SELECT customers.customer_name, orders.order_id, orders.order_date
FROM customers
RIGHT JOIN orders ON customers.customer_id = orders.customer_id;

此查询会显示所有客户信息,包含那些没有订单的客户。


1.4 FULL JOIN(全连接)

全连接返回两个表中的所有行,不论是否匹配。MySQL 本身不直接支持 FULL JOIN,但可以通过使用 UNION 结合 LEFT JOINRIGHT JOIN 来实现全连接。

语法

SELECT columns
FROM table1
LEFT JOIN table2 ON table1.column = table2.column
UNION
SELECT columns
FROM table1
RIGHT JOIN table2 ON table1.column = table2.column;

示例
返回所有客户和订单,不论是否有匹配关系:

SELECT customers.customer_name, orders.order_id, orders.order_date
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id
UNION
SELECT customers.customer_name, orders.order_id, orders.order_date
FROM customers
RIGHT JOIN orders ON customers.customer_id = orders.customer_id;

1.5 CROSS JOIN(交叉连接)

交叉连接会返回两个表的笛卡尔积,即每一个表中的行都和另一个表中的每一行进行组合,不考虑是否有匹配条件。

语法

SELECT columns
FROM table1
CROSS JOIN table2;

示例
查询所有产品与所有订单的组合:

SELECT products.product_name, orders.order_id
FROM products
CROSS JOIN orders;

此查询返回所有产品和订单的每一种组合。


上一篇:基于SSM+小程序的高校寻物平台管理系统(失物1)


下一篇:数据结构和算法-01背包问题01-认识01背包