02 数据分析与SQL Lesson2 SQL JOIN
文章目录
1.视频:JOIN简介
在公司运营中产生的公司数据(包括采购数据、员工数据、库存等等)存放在一个Excel中没有太大用处。因为这样的表格包含信息过多,也很难为不同类型的数据建立行列和结构。而多个数据库能在各个表格中有序地组织数据。当需要多种类型数据是,可以整合表格,使用SQL的JOIN方法,按照每个表中的相同标识,轻松整合多个表格中的信息:
2.为何要将数据拆分为不同的表格?
等同于为什么要用JOIN的方式组合数据,原因如下:
- Orders and accounts are different types of objects
- This allows queries to execute more quickly
e.g.1 都在一个表,更新一个用户的address会造成更新多行记录
数据库规范化
数据库如何存储数据其实是数据库规范化的问题,数据库规范化需要考虑以下3个要点:
- 表格存储了逻辑分组的数据吗?
- 我能在一个位置进行更改,而不是在多个表格中对同一信息作出更改吗?
- 我能快速高效地访问和操纵数据吗?
- ![/扩展内容(墙)/]https://www.itprotoday.com/microsoft-sql-server/sql-design-why-you-need-database-normalization
5.解决方案:你的首个JOHN
第2问的答案如下面代码,大家注意以下几点:
- SELECT后面明确要选出的数据,用表.列来制定某个表中的列。如果这里用*则会选出结合之后所有数据列。
- FROM a JOIN b,就是把a和b结合成一个更大的数据。注意默认是INNER JOIN,可以指定其他对其方式。
- 结合的对应规则在 ON 这行指定。
SELECT orders.standard_qty, orders.gloss_qty,
orders.poster_qty, accounts.website,
accounts.primary_poc
FROM orders
JOIN accounts
ON orders.account_id = accounts.id
8.练习:主外键关系
本部分练习2不选择“表格中可能有多个主键”,因为从课程的角度来讲,虽然有这个情况出现,但是这样并不很恰当。
crow-foot(鱼尾纹)标记的是外键。
10.视频:别名
可以这样:
FROM tablename AS t1
JOIN tablename2 AS t2
也可以省略AS,这样:
FROM tablename t1
JOIN tablename2 t2
还可以把一个运算结果赋予别名,比如下面这个 col1 + col2 命名为 total:
SELECT col1 + col2 total, col3
14.练习:JOHN问题(第一部分)
- 为与客户名称 Walmart 相关的所有 web_events 创建一个表格。表格应该包含三列:primary_poc、事件时间和每个事件的渠道。此外,你可以选择添加第四列,确保仅选中了 Walmart 事件。如下代码:
- SELECT 语句根据要求选择了4列,并且使用了别名a,w
- FROM和JOIN 定义了选择范围和别名
- WHERE 定义了过滤方法
SELECT a.primary_poc, w.occurred_at, w.channel, a.name
FROM web_events w
JOIN accounts a
ON w.account_id = a.id
WHERE a.name = 'Walmart';
- 为每个销售代表对应