[数据科学DS/BA面经总结] SQL常考知识点1 - Join Basics

这篇文章原文首发于我的Techie数据科学文章 : 破解SQL面试 I - Join基础 , 纯手打原创, 分享到论坛中和大家一起交流讨论。如果感兴趣其他数据科学,数据分析面试文章,也可以浏览Techie面经题解系列文章 ,也欢迎大家加入Techie的免费会员,获取更多面经干货文章。

techie_posts

在我们SQL的学习过程中,有着众多耳熟能详的语法关键字,但其中最为闪耀且为人熟知的当属 - Join。从今天开始,我会发布一系列文章,将尽可能涵盖JOIN的方方面面,内容将包括:

  • Join基础
  • Left Join/Right Join/Outer Join
  • Self Join
  • Join的底层实现

今天,我们先从最基本的内容开始介绍Join。

如果你想跟我一起体验数据科学面试流程, 为你指导面试备考或者答题过程中的问题, 欢迎报名参加Techie备受好评的数据科学集训营以及数据科学模拟面试服务. Techie数据科学教师团队会用60+课时的时间,结合90+道数据科学面试真题, 以最高效地方式帮大家梳理数据科学知识体系, 并结合工业界级别的项目训练, 全方位提高大家的综合应用能力以及面试实战技巧. 如果你在数据科学备考或学习过程中有任何问题, 也欢迎扫描下方的二维码或者搜索 TonyCoding20 添加微信, 期待和大家的沟通!

Join的目的

首先,我们从Join的目的出发,也就是我们为什么需要Join以及Join如何帮助我们解决问题的。

简单来说,数据库里面有多个表格(table),我们想把这些表格关联起来,这个时候我们就需要一些操作来将它们连接,而Join就是帮助我们完成关联和组合的这个语法。例如:

Q: Find the order details of each customer who made an order. Output the customer’s first name, last name, and the city along with the order details.

如果我们想知道每个用户买了什么东西,就需要将customers和orders这两个table关联起来,否则如果只看orders这个table,那我们就只有一些customer_id和对应的order_id的信息,但我们不知道用户的具体信息,所以我们需要讲customers table和orders table关联起来,引入用户信息。

通过例子可以看到,我们就需要一个语法来帮我们把两个table关联起来,最终得到我们想要的信息,而这个语法就是Join。

Join基本语法

1. JOIN…ON…

我们先来看一下最基本的Join方法:

在上面的query里面,在FROM之后,我们用JOIN关键字连接两个table: customers和orders,再利用ON关键字表明两个table通过什么关系来连接,这里面我们用customer_id作为共同点,即customer_id相同的行,我们将它们连在一起。为了方便,我们将两个table的column name都设成customer_id,但在某些情况下,你可以会遇到不一样的名字column,但它们却是我们需要的mapping,例如:

这个时候,我们的query会变成:

在这个例子里面,我们需要customers里面的id和orders里面的customer_id作为关联两个table的关系点。

我们在这张图里看一下JOIN在这里是如何work的(选取了一部分column):查看这里原文中的query分析图片

将customers里面customer_id和orders里面customer_id相同的所有行连(Join)在一起。

2. Different Types of Join

  • INNER JOIN: 返回两个表中具有相同值
  • LEFT JOIN: 返回左表中的所有值,以及右表中能够匹配的值
  • RIGHT JOIN: 返回右表中的所有值,以及左表中能够匹配的值
  • OUTER JOIN: 返回所有值,包括左右表各自独有的,以及交集部分

3. Using

如果我们table的关联的column name是相同的,我们可以用using来代替on稍微简化一下query,语法示例如下:

真题解析

我们将上面例子转换成一个稍复杂一点的题目。

***Q: Find the details of each customer regardless of whether the customer made an order. Output the customer's first name, last name, and the city along with the order details.***

查看这里原文中的习题答案

在之后的SQL系列文章中,我会继续为大家梳理总结SQL常考语法以及面经题难点。如果你对于数据方向职业的进阶很感兴趣,欢迎报名参加Techie备受好评的数据科学集训营。如果你对SQL面试准备和学习有任何问题,也欢迎扫描下方的二维码或者搜索TonyCoding20添加微信, 期待和大家的沟通!