黃河之水天上來,數據之源資料庫——SQL

一.為什麼學習資料庫?

數據從哪來?除了來自於Excel里的數據,在現實中,大部分的數據是存放在資料庫中。這就要求你能從資料庫中讀取數據,並進行分析得出結果。

1、數據分析師需要掌握以下2個知識點:

(1)常用的關係資料庫:Mysql

(2)SQL語句:從資料庫中獲取數據,並進行分析的語言

2、社群會員潘康平成功轉行數據分析的經驗總結(現是餓了么業務分析師,靠擅長SQL數據分析)

(1)SQL能力比較重要,要好好學

(2)會收到很多面試邀請和offer,要撿重點

(3)開通知乎專欄

(4)能力上主要是SQL,分析主要靠excel

(5)不要怕零基礎,他行,我也行。只要你願意付出努力

3、面試數據分析,需要掌握哪些SQL核心技能呢?

1)會利用SQL操作開源資料庫mysql進行查

2)資料庫的分組、聚合、排序

3)存儲過程

4、SQL成為數據分析面試經常考察的內容。

最常見的考SQL的方法給你一個虛擬的資料庫表結構,然後讓你按給出的條件查詢出數據,並用手寫的形式寫出在紙上。所以面試前把常用的SQL語句記清楚就行了。

二.資料庫是什麼?

資料庫就是存儲數據的地方,就像冰箱是存儲食物的地方一樣。正是因為有了資料庫後,所有人可以直接在這個系統上查找數據和修改數據。例如你每天使用餘額寶查看自己的賬戶收益,就是從後台資料庫讀取數據後給你的。

資料庫的英文名稱叫DB(Database),那麼資料庫裡面有什麼東東呢?

資料庫通常包含一個或多個表組成。如果你用過Excel,就會知道Excel是一張一張的二維表。每個表都是有列和行組成的,其中每一列都用名字來標識出來。同樣的,資料庫里存放的也是一張一張的表,只不過各個表之間是有聯繫的。

所以,簡單來說:

資料庫=多張表+各表之間的關係

其實資料庫是邏輯上的概念,它是一堆互相關聯的數據,放在物理實體上,是一堆寫在磁碟上的文件,文件中有數據。這些最基礎的數據組成了表(table)。

學會資料庫你需要掌握以下兩點:

1)資料庫表的結構

表的結構是指要了解資料庫每張表長什麼樣。

資料庫中每個表由一個名字標識。表包含帶有列名的列,和記錄數據的行。

你可能會問了,為啥要有個用戶id來表示數據的唯一性呢,用姓名也可以呀?

其實,姓名是無法唯一確定出一個用戶的,因為會有重名。所以,資料庫的表裡都會加一個ID的欄位用來表示數據的唯一性

ID是資料庫中重要的概念,叫做唯一標識符或者主鍵,用來表示數據的唯一性。其實,在生活中我們也會使用ID來標識數據的唯一性唯一標識,最典型的例子就是國家用身份證來唯一標識一個人 ,資料庫中的ID也是這個作用,唯一標識一條數據,只不過在資料庫中我們把這樣唯一標識數據的ID叫做主鍵,每張表只能有一個主鍵。

2)各表之間的關係

數據之間也是有聯繫的。資料庫里各個表之間如何建立聯繫呢?

資料庫是表的集合,一個資料庫中可以放多張,表與表之間能互相聯繫。我們看下面兩張表(數據分析社群會員表,教育背景表),你能告訴我它們之間有什麼聯繫嗎?

表1:社群會員

表2:教育背景

這兩張表通過會員ID關聯起來,為了更清楚的看到這兩個表的關係,下面的圖中我用相同顏色代表同一個會員的信息。例如在會員表裡姓名是猴子的會員ID是1,那麼我想知道該會員的教育背景,我就可以在教育背景這個表裡去查找「會員ID」值是1的行,最後發現這行數據的教育背景ID是2,對應的就找到該會員的教育背景信息了。

3. 資料庫里各個表之間如何建立聯繫呢?

資料庫中,如果你要關聯其他表,一般會以「表名_ID」作為聯接。就像我們在上面「教育背景」表裡加入了「會員的ID」就是將兩張表關聯起來了。

聯繫就是數據能夠對應匹配,在資料庫中正式名稱叫聯接,對應的操作叫做join。

Join(聯接)是關係型資料庫中的核心概念,是操作的基礎

4、實現資料庫原理的「施工團隊」就是常用的資料庫軟體,例如MySQL、Oracle、SQL Server等都是實現上面理論的資料庫。各個資料庫軟體的使用差別大同小異,但是因為MySQL是開源的,成為各大公司使用的主流,面試也主要以MySQL為主。

四、SQL語句學習

SQL的學習主要分兩步來進行,也不需要看書。

SQL基礎知識

1)SQL學習直接看w3school中的內容就可以了:w3school.com.cn/sql/ind

2)學習的過程中對照著在Mysql圖形軟體(Navicat) 中操作。

如何在Navicat中寫SQL語句:formysql.com/jiqiao/sql

五、如何使用Pyhton操作資料庫?

可以單獨使用Mysql進行數據分析,也可將Python和Mysql結合起來實現更豐富的應用。

PyMySQL包提供了在Python中操作Mysql的各種方法。

Python中操作資料庫使用起來也特別簡單,基本上下面4步套路就可以了。

導入Python的資料庫包

連接資料庫

SQL查詢:獲取數據

關閉資料庫連接

教程:runoob.com/python3/pyth

六、SQL練習平台sqlzoo中將習題

sqlzoo.net/wiki/SELECT_

(一)/SELECT basics/zh

表格WORLD

(二)/SELECT names/zh

(三)/SQLZOO:SELECTfrom WORLD Tutorial/zh

(四)/ SELECT fromNobel

nobel 諾貝爾獎得獎者

我們繼續練習簡單的單一表格SQL查詢。

這個教程是有關諾貝爾獎得獎者的:

10、顯示早期的醫學獎(Medicine)得獎者(1910之前,不包括1910),及近年文學獎(Literature)得獎者(2004年以後,包括2004年)。

select *

from nobel

where (yr<1910 and subject=Medicine)

or (yr>=2004 and subject=Literature)

(五)/SELECT withinSELECT Tutorial/zh

如要練習一些較少用的SQL功能,看下去。

我們可以用ALL 這個詞對一個列表進行>=或>或<或<=充當比較。例如,你可以用此查詢找到世界上最大的國家(以人口計算):

SELECT name

FROM world

WHERE population >= ALL(SELECT population

FROM world

WHERE population>0)

你需在子查詢的條件中使用 population>0,因為有些國家的記錄中,人口是沒有填入,只有 null值。

六SUM and COUNT/zh

全球統計:群組函數

此教程是有關群組函數,例如COUNT, SUM 和 AVG。群組函數把多個數值運算,得出結果只有一個數值。例如SUM函數會把數值2,4,和5運算成結果11。

七、The JOIN operation/zh

合拼表格-- 歐洲國家盃 UEFA EURO 2012

此教程是介召 JOIN的使用,讓你合拼2個或更多的表格。數據庫的表格貯存了在波蘭 Poland 和烏克欄 Ukraine的歐洲國家盃2012的賽事和進球資料。

最後:

推薦書籍:《深入淺出SQL》or《SQL必知必會》


推薦閱讀:

MySQL練習
mysql表中查找和小於某個數的所有最前面的記錄?
Python3 pandas如何加快SQL Server讀寫速度?
使用CUDA加速SQL查詢的研究狀況目前如何,未來的發展會怎樣?
為什麼公司不準使用SQL語句查詢的「*」?

TAG:MySQL | SQL | 數據分析師 |