| 寫給新人的數據庫入門指南原創(chuàng) 數據分析不是個事兒 2019-02-27 14:48:32 此文是《10周入門數據分析》系列的第5篇。 上周更新了兩篇Excel學習,有讀者反映寫得不夠實操。這里解釋下,文字真的很難將每一步細化,不然真的要出一本書。文章更多是一個引路,告訴大家為什么要學這個,主要學什么,怎么學?深入的操作,還需大家業(yè)余加餐啊,已經盡量給大家留了材料了。 也有人提議,出個視頻,不錯!很贊!明年計劃下。即使沒有時間,我也會推薦一些我認為OK的視頻讓大家學習。 年底了,近幾個晚上都在苦熬年終報告,各位寫好了么? 好了,回到正文,本篇講數據庫知識: 經常有剛從事數據分析的職場萌新,問我做數據分析工作要學些什么,應該怎樣規(guī)劃學習路徑。我會告訴他:如果你Excel還用的不溜的話,就先學學Excel,當你用Excel處理和分析一些小數據集沒有問題的時候(具體表現就是:常用函數公式信手拈來,數據透視表,篩選,排序,圖表繪制操作熟練),你就去學習SQL語言,然后用BI去分析去熟悉業(yè)務。然后到了一定階段,你可以上手R或者Python。后面如果你能更進一步,可以去了解一些Spark等大數據框架。 為什么要學習Excel? 首先Excel是我們最常用的數據分析和處理工具,Excel的功能非常豐富,基本可以涵蓋我們在之后在其它軟件(SQL、BI、Python、R)中要學到的那些功能。 有的人可能會問,既然Excel這么強大,為什么還要學其它的工具?這是因為Excel是通過菜單的形式來進行操作的,很難實現自動化和功能復用,當然你也可以通過VBA來實現,用VBA也就是編程了,不過因為VBA這種語言學會了基本只能在office軟件中使用,學習的投入成本和產出收益不成比例,不推薦學習,這是客觀原因之一;另外就是Excel在處理比較大的數據集的時候,性能很差,并且經常崩潰。(雖然Excel2013及以上版本宣稱可以容納100+萬條記錄,但幾萬條數據就開始卡頓了)。 為什么Excel學完要學SQL? 客觀原因是絕大部分數據分析崗都有SQL技能的要求。企業(yè)里面為了保證數據的安全性和管理的方便,數據都是統(tǒng)一存放在數據庫中,從數據庫中提取和查詢數據需要使用SQL語言,甚至有的公司就是用SQL語言來做數據分析。 另外一個原因就是即使你先學了其它的工具,比如R,Python,甚至Spark等大數據框架,你會發(fā)現最后你還是得學習SQL。如果你先學習SQL,那么很多概念你都能在學習R,Python,Spark等更加復雜的工具之前弄清楚。對于后面的學習會有幫助。這就好比建房子,都是先打地基,然后一層一層的蓋。 SQL語言的學習排在Excel之后,其它工具之前,還有一個很重要的原因就是,SQL可以在一定程度上幫Excel解決大數據集的問題,同時架起一個通往其它工具的橋梁。 關于數據庫和SQL的學習,也是分為兩篇,第一篇講數據庫以及表的概念。第二篇是SQL語句的掌握和數據庫的操作。 一、數據庫基礎知識先談一下我對數據庫的理解。數據庫顧名思義就是數據的集合,是由一張張數據表組成的。 放在物理實體上,是一堆寫在磁盤上的文件,文件中有數據。這些最基礎的數據組成了表(table),我們把它想象成一張Excel的sheet,如下圖: 每一張表都有一個唯一標識,即主鍵,也就是ID。ID是數據庫中重要的概念,叫做唯一標識符/主鍵,用來表示數據的唯一性。就相當于我們的身份證,是唯一的,有了身份證,就知道數據在哪了。 ID通常沒有業(yè)務含義,就是一種唯一標識,每張表只能有一個主鍵,且主鍵通常是整數,主鍵一旦設立,值通常不允許修改。 數據庫是表的集合。一個數據庫中可以放多張表,我們給每張表命名,表與表之間能互相聯(lián)系。聯(lián)系就是數據能夠對應匹配,正式名稱叫聯(lián)接,對應的操作叫做Join,我們想象成Excel中的vlookup。 比如上面兩張圖,左圖是學生信息表,右圖是老師信息表。左圖的主鍵是學生ID,右圖的主鍵是老師ID。細心的讀者可能發(fā)現右圖還有一個學生ID,這里的學生ID是專門用來聯(lián)接用戶表的,它并不是主鍵。只不過兩張表通過學生ID這個唯一信息來關聯(lián)。 但兩張表關聯(lián)也并不是信息能一一對應的,也會存在空缺的時候,比如: 那兩表建立連接就會變成: 了解上面的概念,你就知道什么叫關系型數據庫。簡單說,它是由多張能互相聯(lián)接的二維行列表格組成的數據庫。在數據準備時,我們通常要建立表關聯(lián)來分析。 關系型數據庫是基于關系代數模型發(fā)展而來,常用的關系型數據庫有SQL Server、MySQL、Oracle、DB2等,這個視企業(yè)使用為準,我們后續(xù)學習都以MySQL為主。 各關系型數據庫(不感興趣可跳過): DB2: 關系型數據庫, 適用于大型的分布式應用系統(tǒng), 確實是非常非常好的數據庫, 無論穩(wěn)定性, 安全性, 恢復性等等都無可挑剔, 而且從小規(guī)模到大規(guī)模的應用都非常適合。但是使用起來覺得非常繁瑣, 安裝的時候要求頗多, 很多軟件都可能和DB2產生沖突, 因為一般DB2都是安裝在小型機或者服務器上的, 所以在PC上安裝很費事兒。新建一個庫需要設置很多東西, 分配各種各樣的存儲空間。 Oracle: 是目前市場占有率最大的數據庫, 我在學習SSH的時候用的就是Oracle, 安裝起來很繁瑣, 而且居然程序文件有3G之多... 用起來非常方便, 對于我這樣的初學者, 有很簡單的配置, 對于要求很高的企業(yè)級應用, 也有很復雜的配置和管理方法, 有很強大的數據字典, 可以說是最實用的數據庫了, 但是查了一下, 價格不菲... MS SQL: 當初用的是2000和2005版, 這兩個版本差了很多。2000的數據庫做的不錯, 程序很小, 操作簡單, 功能較全, 算是各方面都很中庸的數據庫吧, 是中型數據庫, 我的畢業(yè)設計就是用MS SQL 2000做的。2005中加入了很多功能, 復雜多了, 有大型數據庫的風范了, 而且價格也變高了, 個人覺得除非用的是Window Server 系統(tǒng)或者針對Microsoft產品, 否則不如用Oracle好。 MySQL: MySQL是一個很好的關系型數據庫, 免費, 而且功能很全, 程序又小, 安裝簡單, 現在很多網站都用MYSQL, 在字段約束上做的差了點兒, 其他的都不錯, 和MS SQL 用著差不多。 Access: 典型的桌面數據庫, 覺得做個單機系統(tǒng), 比如記賬, 記事兒什么的還成, 在局域網里跑個小系統(tǒng)都夠嗆, 數據源連接很簡單, 因為是Office的數據庫, 所以Windows自帶數據源。 更多關于數據庫的知識,看一本《數據庫系統(tǒng)概論》就夠了。 二、嘗試使用MySQL數據庫如果還沒有接觸過數據庫或者說SQL,推薦大家下載并安裝MySQL數據進行嘗試,MySQL數據庫的下載安裝比較簡單,安裝完成就可以使用。 可以訪問MySQL官網進行下載,網址如下(這里給出的是Windows版下載地址): 下載MySQL時,需要進行免費注冊,注冊頁面是英文的。下載該工具后,點擊運行,這個程序就能夠聯(lián)網自動為你安裝MySQL,并自動進行配置。在安裝過程中,需要你設置密碼,自己設置一個登陸密碼,并記住,下次登陸MySQL時,需要這個密碼。 解壓之后沒有my.ini文件(我的端口設置的3308),截圖中是我增加的。 管理員命令行: 在MySQL安裝目錄的 bin 目錄下執(zhí)行命令: mysqld --initialize --console 得到如下結果: 看到有個警告,查了一下mysql建議使用utf8mb4 修改my.ini文件 警告沒有了,上面打印了默認密碼:nj>uUJkpH4/I 然后,安裝服務: mysqld --install MySQL8.0 因為這是電腦上第二個mysql 所以服務名改成了 MySQL8.0 啟動服務: net start MySQL8.0 修改初始密碼 登錄mysql之后執(zhí)行: ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';  將MySQL和Excel或者其它數據分析工具連接起來 默認安裝的情況下,有一個插件允許MySQL數據庫和Excel相連接,試想一下,我們在MySQL數據庫中通過SQL語言進行大量數據的處理和計算,將計算結果存放在特定的數據表中,再通過Excel連接上MySQL數據庫,將數據讀取到Excel中,用Excel進行分析并繪制圖表,免去了將數據從數據庫導出再導入Excel的麻煩,是不是就可以提高效率了呢? 后面會分享一篇通過ODBC驅動程序連接一些報表BI工具來做分析的操作。 關于MySQL的學習推薦書籍《MySQL必知必會》。 | 
|  |