抓取资料库数据 - SQL基础语法(下)

我们学会了单张表的查询与筛选,当资料需要跨表拉取时该怎麽办呢?这时候我们就需要用到JOIN来把表与表之间合并。

我们先来看下面这张表,这是由C.L. Moffatt 发表的 Visual Representation of SQL Joins一文中解释何谓JOIN所做的图示,非常的清楚易懂。今天就让我们来一一认识这些不同的JOIN用法吧!

https://ithelp.ithome.com.tw/upload/images/20211002/20126080ISXC1AuxFV.png

左、右外连接

首先,先从我们最最最常用的LEFT JOIN开始!

SELECT 栏位名1,栏位名2,栏位名3
FROM Table_A AS A
LEFT JOIN Table_B AS B
ON A.Key = B.Key;

我们要使用LEFT JOIN,就需要将两张表的KEY栏位找出来,也就是在这一篇中『』我们有讲到关联性资料库的特性之一。

在上述的程序码中我们也新学到一个用法-AS,其作用就是可以针对表名、栏位名等做重新命名,来方便我们在程序码的撰写。

LEFT JOIN又称为左外连接,也就是针对你原本的A表,将B表有相关的资讯都补充上去,由於是以A表为主,因此B表没有的就会以Null显示。而与其相反的就是RIGHT JOIN,以B表为主来查找A表的相关资料。

全连接

小孩子才做选择,我全都要!想要连接所有的资料,你需要使用的是FULL OUTER JOIN或是FULL JOIN。它会包含两张表的所有栏位,如有缺少关联的项目,一样会用Null显示。

SELECT 栏位名1,栏位名2,栏位名3
FROM Table_A AS A
FULL OUTER JOIN Table_B AS B
ON A.Key = B.Key;

内连接

只想保留资料有交集的那一块怎麽做?没错~使用INNER JOIN!唯有同时满足A表和B表的资料才会被保留下来。通常在不清楚或不熟悉资料栏位和内容的情况下,使用INNER JOIN已经变相在过滤资料了,因此要特别小心使用!

SELECT 栏位名1,栏位名2,栏位名3
FROM Table_A AS A
INNER JOIN Table_B AS B
ON A.Key = B.Key;

上述是最常见的资料关联方式,如果想要知道更多其他的关联方法可以参考下方的资料学习。

接下来要进到SQL进阶的部分,也就是「子查询」的运用。

子查询透过前2天学习的语句,加上今天学习的JOIN,可以产生好多种变化!然後你就会发现你的query越写越长,逻辑越来越难懂XD逐渐朝向SQL大师的道路迈进~~~

耶~努力成为SQL大师吧!我们明天见!


图片来源:

https://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

参考资料:

https://zh.wikipedia.org/wiki/连接

https://www.w3schools.com/sql/sql_join_inner.asp


<<:  Day-19 Button

>>:  [Day 18] 我会把我的over fitting,drop好drop满

从精准回馈来看成长重要性

纪录,衍生出个人或是团队的观察日记。在绩效面谈需要聊聊对於同事或主管期许你给予回馈,这份观察纪录就可...

[Day 8] Reactive Programming - Reactor(FLUX & MONO) Part 2

前言 上一篇介绍了何谓FLUX & MONO,本篇就来说明具体的使用方式。 Just 最简单...

第 9 天 元件还是页面,这是个问题|page、component

前情提要 藉着重构原先从元件取得资料的方法,我们将对 http 的呼叫封装在服务里,隐藏了资料来源的...

【day13】DashboardFragment X CardView

今天我们要做的就是,当使用者一进到我们的App时,就可以看到除了自己上架的其他讯息! 先上图 1....

Powershell 远程连接

使用过 Linux 的都知道,Linux 的 shell 不但可以本地运行,也可以通过远程的方式连接...