從SQL的角度來(lái)看,數(shù)據(jù)庫(kù)就是一個(gè)以某種有組織的方式存儲(chǔ)的數(shù)據(jù)集合。我們可以采用數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)進(jìn)行有效的存儲(chǔ)與管理,并運(yùn)用數(shù)據(jù)庫(kù)進(jìn)行合理的處理與分析,使其轉(zhuǎn)化為有價(jià)值的數(shù)據(jù)信息。什么是數(shù)據(jù)分析,如何快速上手?jǐn)?shù)據(jù)分析呢?下面就由小編為您帶來(lái)數(shù)據(jù)分析教程的相關(guān)介紹。
理解數(shù)據(jù)庫(kù)的一種簡(jiǎn)單辦法是將其想象為一個(gè)存放數(shù)據(jù)的文件柜, 往文件柜里存放數(shù)據(jù)資料時(shí),先在文件柜中創(chuàng)建文件,然后將相關(guān)的數(shù)據(jù)資料放入特定的文件中,這種存儲(chǔ)某種特定類型數(shù)據(jù)的結(jié)構(gòu)化的文件就稱為表。每個(gè)表都有唯一的表名(在同一數(shù)據(jù)庫(kù)中不能有兩個(gè)相同的表名)。
表由列組成,每一列存儲(chǔ)著某種特定的信息,并且具有相應(yīng)的數(shù)據(jù)類型。表中的數(shù)據(jù)是按行存儲(chǔ)的,所保存的每個(gè)記錄存儲(chǔ)在自己的行內(nèi),并且應(yīng)盡量保證每一行都有一列(或幾列)能夠唯一標(biāo)識(shí)該行的主鍵。表中的任何列都可以作為主鍵,只要它滿足以下條件:任意兩行主鍵值不同、主鍵列不允許NULL值,且習(xí)慣上不更新或重用主鍵值。
SQL(發(fā)音為字母S-Q-L或sequel)的全稱為“Structured Query Language” (結(jié)構(gòu)化查詢語(yǔ)言),是一種專門用來(lái)與數(shù)據(jù)庫(kù)溝通的語(yǔ)言,用以查詢關(guān)系數(shù)據(jù)庫(kù)表的內(nèi)容,以及插入、更新和刪除數(shù)據(jù)。SQL簡(jiǎn)潔易學(xué),功能強(qiáng)大,靈活使用其語(yǔ)言元素,可以進(jìn)行非常復(fù)雜和高級(jí)的數(shù)據(jù)庫(kù)操作。
SQL不是某個(gè)特定數(shù)據(jù)庫(kù)供應(yīng)商專有的語(yǔ)言,幾乎所有主要的DBMS(數(shù)據(jù)庫(kù)管理系統(tǒng))都支持SQL,因此掌握該語(yǔ)言使你幾乎能與所有數(shù)據(jù)庫(kù)打交道。標(biāo)準(zhǔn)SQL由ANSI標(biāo)準(zhǔn)委員會(huì)管理,從而稱為ANSI SQL。
所有主要的DBMS即使有自己的擴(kuò)展(提供執(zhí)行特定操作的額外功能或簡(jiǎn)化方法),也都支持ANSI SQL。本教程主要使用標(biāo)準(zhǔn)SQL,提供的SQL示例代碼在MySQL 5.7.19環(huán)境下測(cè)試通過(guò),然而本教程所探討的概念也適用于其他SQL環(huán)境。
SQL不是一個(gè)應(yīng)用,而是一種語(yǔ)言。因此,為了學(xué)習(xí)SQL,我們還需要一個(gè)支持SQL語(yǔ)句執(zhí)行的應(yīng)用程序。
實(shí)際上,數(shù)據(jù)的所有存儲(chǔ)、檢索、管理和處理都是由數(shù)據(jù)庫(kù)軟件——DBMS(數(shù)據(jù)庫(kù)管理系統(tǒng))完成的。較為流行的DBMS包括MySQL、 Oracle、 Microsoft SQL Sever、 PostgreSQL等,以下主要介紹MySQL。
MySQL是一個(gè)開(kāi)源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),由瑞典MySQL AB公司開(kāi)發(fā),目前為 Oracle 旗下產(chǎn)品,是世界上最受歡迎的數(shù)據(jù)庫(kù)管理系統(tǒng)之一。
數(shù)據(jù)分析
有兩種方式使用MySQL。在安裝MySQL時(shí)會(huì)自帶一個(gè)名為mysql命令行實(shí)用程序,這是一個(gè)純文本工具,可以用來(lái)執(zhí)行任何SQL語(yǔ)句。另外,MySQL 官方發(fā)布了一個(gè)名為MySQL Workbench的可視化管理工具,用戶可以在安裝MySQL時(shí)一起選擇安裝,也可以獨(dú)立下載安裝。較為流行的MySQL數(shù)據(jù)庫(kù)可視化管理工具包括MySQL Workbench、 Navicat、 phpMyAdmin、Sequel Pro等。在Windows平臺(tái)學(xué)習(xí)SQL時(shí),推薦使用MySQL Workbench。
有兩種方式使用mysql命令行實(shí)用程序。第一種方式是從開(kāi)始菜單欄中打開(kāi)MySQL 5.7 Command Line Client,輸入密碼,出現(xiàn)如下界面表示數(shù)據(jù)庫(kù)連接成功:
第二種方式:如果已經(jīng)將MySQL Sever安裝目錄下的bin子目錄加入到了windows的環(huán)境變量中,可以直接在命令行中輸入mysql -u root -p 命令,回車后輸入密碼即可連接成功。如下圖所示:數(shù)據(jù)庫(kù)連接成功后,在mysql>提示下輸入U(xiǎn)SE database 打開(kāi)數(shù)據(jù)庫(kù),例如USE world就是打開(kāi)world數(shù)據(jù)庫(kù)。
在mysql>提示下輸入SQL語(yǔ)句,每條語(yǔ)句須以分號(hào)(;)結(jié)束。結(jié)果將顯示在屏幕上。
輸入\h可以顯示可能用到的命令列表,輸入\s可以顯示狀態(tài)信息(如MySQL版本信息)。
輸入\q或quit可以退出程序。
盡管我們可以在命令提示符下通過(guò)一行行的輸入或者通過(guò)重定向文件來(lái)執(zhí)行mysql語(yǔ)句,但該方式效率較低, 且由于沒(méi)有執(zhí)行前的語(yǔ)法自動(dòng)檢查, 輸入失誤造成的一些錯(cuò)誤的可能性會(huì)大大增加。
使用MySQL Workbench 可以通過(guò)可視化的方式直接管理數(shù)據(jù)庫(kù)中的內(nèi)容, 并且 MySQL Workbench 的 SQL 腳本編輯器支持語(yǔ)法高亮以及輸入時(shí)的語(yǔ)法檢查,方便我們學(xué)習(xí)SQL。可通過(guò)以下操作使用MySQL Workbench:
運(yùn)行MySQL Workbench。界面左下角列出了可用的MySQL數(shù)據(jù)庫(kù)連接,可直接點(diǎn)擊打開(kāi),輸入密碼便可連接。如果沒(méi)有在此列出,可選擇【MySQL Connections】右側(cè)的加號(hào)按鈕,創(chuàng)建新的連接。
登陸成功后的Workbench界面概覽如下圖所示:
其中,區(qū)域1顯示的是數(shù)據(jù)庫(kù)服務(wù)器中已經(jīng)創(chuàng)建的數(shù)據(jù)庫(kù)列表。區(qū)域2是關(guān)于數(shù)據(jù)庫(kù)的操作列表。區(qū)域3是sql的編輯器和執(zhí)行環(huán)境,區(qū)域4是執(zhí)行結(jié)果的列表。
輸入SQL語(yǔ)句后,點(diǎn)擊Execute(帶有閃電圖片) 或使用快捷鍵【ctrl+enter】運(yùn)行SQL,將結(jié)果顯示在下面。如下圖所示:
完成前面的安裝與設(shè)定工作后,MySQL中已經(jīng)有一個(gè)內(nèi)建的范例數(shù)據(jù)庫(kù)world。但這個(gè)數(shù)據(jù)庫(kù)比較簡(jiǎn)單,為了更好地練習(xí)SQL語(yǔ)句,我們還需要做最后一項(xiàng)準(zhǔn)備工作:導(dǎo)入樣例表。后續(xù)教程將會(huì)基于此樣例表編寫各式SQL語(yǔ)句。
本教程采用著名暢銷書(shū)Sams Teach Yourself SQL in 10 Minutes 一書(shū)中所提供的樣例表。樣例表描述的是一個(gè)隨身物品推銷商使用的訂單錄入系統(tǒng),下圖顯示了5張表之間的關(guān)系:
其中,Customers表存儲(chǔ)所有顧客信息;Vendors表存儲(chǔ)銷售產(chǎn)品的供應(yīng)商,每個(gè)供應(yīng)商在這個(gè)表中都有一個(gè)記錄,包含了供應(yīng)商名字、地址、所在城市等數(shù)據(jù)元素,其中使用vend_id作為其主鍵;Products表包含產(chǎn)品目錄,每行一個(gè)產(chǎn)品,并且借助vend_id(供應(yīng)商的唯一ID)與供應(yīng)商相關(guān)聯(lián);
Orders表存儲(chǔ)顧客訂單,每個(gè)訂單都有唯一編號(hào)(order_num列),且根據(jù)cust_id列關(guān)聯(lián)到相應(yīng)的顧客;OrderItems表則存儲(chǔ)每個(gè)訂單中的實(shí)際物品,每個(gè)訂單的每個(gè)物品一行。對(duì)于Orders表的每一行,在OrderItems表中有一行或多行與之對(duì)應(yīng)。
每個(gè)訂單物品由訂單號(hào)加訂單物品(第一個(gè)物品、第二個(gè)物品等)唯一標(biāo)識(shí)。訂單物品用order_num列與其相應(yīng)的訂單相關(guān)聯(lián)。此外,每個(gè)訂單物品還包含該物品的產(chǎn)品ID(把物品關(guān)聯(lián)到Products表)。上圖中表之間的連線便說(shuō)明了表之間的關(guān)系。
- create.txt包含創(chuàng)建5個(gè)數(shù)據(jù)庫(kù)表(包括定義所有主鍵和外鍵約束)的SQL語(yǔ)句。
- populate.txt包含用來(lái)填充這些表的SQL INSERT語(yǔ)句。
導(dǎo)入步驟如下:
- 根據(jù)上述教程,運(yùn)行MySQL Workbench,并連接到MySQL。新建一個(gè)數(shù)據(jù)庫(kù),點(diǎn)擊【Create a New Schema】按鈕,出現(xiàn)如下對(duì)話框。輸入新建數(shù)據(jù)庫(kù)的名稱,選擇【apply】
在彈出的確認(rèn)窗口中選擇【Apply】及【Finish】。然后在SCHEMAS一欄中雙擊創(chuàng)建成功的tjsql,表示選中該數(shù)據(jù)庫(kù),可以看到tjsql一欄變?yōu)楹隗w。
將create.txt中的內(nèi)容復(fù)制粘貼到SQL窗口中,并選擇執(zhí)行,用以創(chuàng)建5個(gè)數(shù)據(jù)庫(kù)表;
同樣,將populate.txt中的內(nèi)容復(fù)制粘貼到SQL窗口中并執(zhí)行,用以填充5個(gè)數(shù)據(jù)庫(kù)表。
使用SELECT * FROM Customers; 語(yǔ)句測(cè)試結(jié)果如下圖表示導(dǎo)入成功。
查看數(shù)據(jù)庫(kù)和表
(1)查看數(shù)據(jù)庫(kù)
在MySQL中可以建立許多數(shù)據(jù)庫(kù),當(dāng)不知道可以使用哪些數(shù)據(jù)庫(kù)時(shí),可用MySQL的SHOW命令顯示當(dāng)前可用的數(shù)據(jù)庫(kù)列表:
SHOW DATABASES;
顯示當(dāng)前服務(wù)器的所有數(shù)據(jù)庫(kù)
1
2
3
4
在MySQL Workbench中輸出結(jié)果為:
包含在這個(gè)列表中的可能是MySQL內(nèi)部使用的數(shù)據(jù)庫(kù)(如information_schema)。當(dāng)然,你自己的數(shù)據(jù)庫(kù)列表可能看上去與這里的不一樣。
(2)選擇數(shù)據(jù)庫(kù)
在執(zhí)行任何數(shù)據(jù)庫(kù)操作前,都需要選擇一個(gè)數(shù)據(jù)庫(kù),才能讀取其中的數(shù)據(jù)。方法是使用USE關(guān)鍵字:
USE tjsql;
選擇使用tjsql數(shù)據(jù)庫(kù)
1
2
3
USE 語(yǔ)句并不返回任何結(jié)果。如果是在MySQL Workbench中運(yùn)行該語(yǔ)句,可以在SCHEMAS一欄看到被選中的數(shù)據(jù)庫(kù)名稱變?yōu)楹隗w(與雙擊該數(shù)據(jù)庫(kù)名稱等效);如果是在mysql 命令行實(shí)用程序中執(zhí)行該語(yǔ)句,則會(huì)顯示輸出“Database changed” 表示數(shù)據(jù)庫(kù)選擇成功。
(3)查看數(shù)據(jù)表
進(jìn)入到某個(gè)數(shù)據(jù)庫(kù)后,我們可以使用 SHOW TABLES;來(lái)顯示該數(shù)據(jù)庫(kù)有多少個(gè)數(shù)據(jù)表:
SHOW TABLES;
顯示當(dāng)前數(shù)據(jù)庫(kù)下所有的表
1
2
3
SQL作為當(dāng)前使用最為廣泛的數(shù)據(jù)庫(kù)語(yǔ)言,已經(jīng)成為數(shù)據(jù)工程師的必備技能之一。這份學(xué)習(xí)指南的第一部分介紹了數(shù)據(jù)庫(kù)、SQL和MySQL的基本概念,完成了SQL環(huán)境的基本搭建。第二部分和第三部分介紹了如何使用SELECT語(yǔ)句進(jìn)行數(shù)據(jù)查詢,包括排序、過(guò)濾、分組、子查詢等基本方法、函數(shù)的使用以及如何使用JOIN和UNION查詢一次性跨多個(gè)表來(lái)訪問(wèn)相關(guān)數(shù)據(jù)。最后一部分還介紹了數(shù)據(jù)管理的基本操作,包括插入、更新和刪除數(shù)據(jù)等。 以上就是小編為您介紹的數(shù)據(jù)分析教程,希望對(duì)您有所幫助。
[免責(zé)聲明]
文章標(biāo)題: 數(shù)據(jù)分析教程:從菜鳥(niǎo)到大神
文章內(nèi)容為網(wǎng)站編輯整理發(fā)布,僅供學(xué)習(xí)與參考,不代表本網(wǎng)站贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問(wèn)題,請(qǐng)及時(shí)溝通。發(fā)送郵件至36dianping@36kr.com,我們會(huì)在3個(gè)工作日內(nèi)處理。