我們在做資料分析的工作時,會用到大量的資料,而這些資料都來自于資料庫,SQL可以讓我們很友善的去通路和查詢資料庫。
作為一個資料分析師,我們需要掌握一些SQL的核心技能
1.資料庫 什麼是資料庫?對于這個問題每個人都有自己的了解
資料庫(Database):就是一個存儲資料的倉庫,其本身其實是一張張表格,每張表格間又通過一定的聯系連接配接在一起,就這樣組成了一個資料庫。
可以這樣了解
資料庫中最基本的元素為表(table),每張表都有一個主鍵(用于對表的身份進行辨別,主鍵具有唯一性),表中包含列和行,列為名稱标簽,行為記錄具體資料。
在資料庫中如何關聯其他的表後面會講到
選取主流的資料庫市場上主流的資料有MySQL、Oracle、SQL Server等,而MySQL 是一個開源的關系型的資料庫管理系統,應用非常廣泛,因而選擇使用Mysql學習sql是個不錯的選擇。
mysql的安裝與配置非常簡單,我們從官網下載下傳社群版本安裝,windows使用者可以選擇安裝MSI安裝(Windows Installer),一直預設安裝,到了資料庫使用者和密碼設定時,設定即可。
選取MySQL的GUI工具這樣的工具有很多種,每個人都有自己的喜好,我用的是HeidiSQL
該工具操作簡單友善這裡不過多叙述使用方法
SQL的基本操作建立資料庫,含有一個簡單的資料表,并進行C(建立)U(更新)R(讀取,查詢)D(删除)操作資料表

我們在進行資料分析時,最常用的功能就是查詢功能,是以首先我們要明确SQL中一些語句的執行順序
select.....from
where
group by --having
order by
like
distinct
常用函數:sum,count, max, min,avg
case when then else end
group by 使用中需要注意的問題
1,注意傳回結果集的字段,,這些字段要麼要包含在Group By語句的後面,作為分組的依據;要麼就要被包含在聚合函數中
2,where 搜尋條件在進行group by 分組操作之前應用,不能使用聚合函數
3, having 搜尋條件在進行分組操作之後應用,可以使用聚合函數
sum:傳回數值列的總數、 avg: 傳回列的平均值、 count()傳回表中的記錄數
max():傳回最大值、 min():傳回最小值
二、連接配接(join)查詢内連接配接
外連接配接
内連接配接等值連接配接:在連接配接條件中使用等于号(=)運算符比較被連接配接列的列值,其查詢結果中列出被連接配接表中的所有列,包括其中的重複列。
不等值連接配接:在連接配接條件使用除等于運算符以外的其它比較運算符比較被連接配接的列的列值。這些運算符包括>、>=、<=、<、!>、!<和<>。
自然連接配接:在連接配接條件中使用等于(=)運算符比較被連接配接列的列值,但它使用選擇清單指出查詢結果集合中所包括的列,并删除連接配接表中的重複列。
多表内連接配接:将多張表連接配接在一起,隻列出比對的記錄
自連接配接(特殊的内聯接): 将一張表,在邏輯上分為兩張表,每張表取不同的别名來差別
包括,左、右連接配接,傳回所有的行
左聯接 left join,以 join 前面一張表為主,傳回其所有行,如果與右表有相同的字段,全部傳回,否則為空,右聯接剛好與之相反。
全連接配接 Full join, 兩張表全部傳回
圖解如下
說白了就是嵌套查詢,包含在某個查詢中,如果子查詢依賴于外部條件,則被稱為相關子查詢;
反之為非相關子查詢