📑 查看全课大纲(第 5 / 5 节)
JOIN 多表连接
JOIN 多表连接
在精心设计的关系型数据库中,为了避免数据冗余,数据往往分散在不同的表中。例如,小象咖啡馆的订单表 orders 只存储订单本身的数据(订单号、金额、顾客ID customer_id),而顾客的具体信息(姓名、注册手机)则存放在会员表 customers 中。如果我们要打印一份带有顾客姓名的“当日订单明细”,就需要使用 JOIN 将它们拼在一起。
两张表会通过一个“桥梁”字段(如 customer_id)相关联。我们使用 ON 来指定它们如何进行匹配:
SELECT ord.order_id, cust.name
FROM orders AS ord
INNER JOIN customers AS cust
ON ord.customer_id = cust.id;📝 选择题
💡 侦探热身:理解连接桥梁条件 在上述查询中,ON ord.customer_id = cust.id 起到了什么关键作用?
- A. 过滤并只保留消费金额大于 100 元的顾客记录
- B. 作为拼接依据,确保每一笔订单能精准对应到该订单所属的会员档案
- C. 从数据库中彻底删除那些没有绑定会员的游客订单
答案:B(作为拼接依据,确保每一笔订单能精准对应到该订单所属的会员档案)
在小象咖啡馆的分析场景中,我们最常用到以下两类连接:
INNER JOIN(内连接):只有当两张表中都有对应匹配的数据时,才会返回记录。例如:只展示绑定了会员身份的订单。LEFT JOIN(左连接):即使右表中没有匹配的值,左表中的所有记录仍然会被保留下来,右表缺失的部分会自动填充为NULL。
✏️ 填空题
💡 侦探实战:揪出“零消费”静默会员 小象咖啡馆想做一次会员关怀,找出所有从未下过单的注册会员。我们需要以会员表 customers 为左表,左连接订单表 orders,即便对方无订单记录也能查出。请补全下方 SQL 代码:
# 会员表作为左表,左连接订单表
SELECT customers.name, orders.order_id
FROM customers
___ JOIN orders
ON customers.id = orders.customer_id;答案:LEFT
🎁 免费学习资源
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问