当需要查询主表所有记录,并关联从表匹配记录(存在则显示,不存在则补NULL)时使用左右连接。
**解释:**
- **左连接(LEFT JOIN)**:返回左表(FROM子句中的表)所有记录,无论右表是否有匹配。若右表无匹配,则右表字段显示为NULL。
- **右连接(RIGHT JOIN)**:返回右表所有记录,无论左表是否有匹配。若左表无匹配,则左表字段显示为NULL。
**何时使用:**
1. **左连接**:当重点关注主表数据,且需包含可能无关联的从表数据时(如查询所有用户及其订单,包括未下单的用户)。
2. **右连接**:当重点关注从表数据,且需包含可能无关联的主表数据时(较少用,通常可改写为左连接)。
**示例:**
- **左连接**:查询所有部门及其员工(包括无员工的部门)。
```sql
SELECT d.department_name, e.employee_name
FROM departments d
LEFT JOIN employees e ON d.department_id = e.department_id;
```
- **右连接**:查询所有订单及其客户(包括无客户的订单,较少见)。等效于左连接改写:
```sql
SELECT o.order_id, c.customer_name
FROM orders o
RIGHT JOIN customers c ON o.customer_id = c.customer_id;
-- 可改写为左连接:FROM customers c LEFT JOIN orders o ON ...
```
**腾讯云相关产品推荐:**
使用腾讯云数据库MySQL、PostgreSQL或TDSQL时,可通过控制台或API直接执行上述连接查询。如需高性能分析,可搭配腾讯云数据仓库TCHouse-D处理复杂关联查询。... 展开详请