
上周我開(kāi)啟了我數(shù)據(jù)分析之旅~安裝mysql學(xué)習(xí)sql語(yǔ)言
而現(xiàn)在的自己是入門(mén)水準(zhǔn),僅僅會(huì)簡(jiǎn)單的查詢(xún)語(yǔ)言、了解一些進(jìn)階的語(yǔ)言。面對(duì)復(fù)雜的語(yǔ)言自己還要跟著案例操作,比如:子查詢(xún)、連接表、組合查詢(xún)。
文章是學(xué)習(xí)《SQL必知必會(huì)》、SOTON數(shù)據(jù)分析、SQL入門(mén)到精通后的匯總。
分為四個(gè)板塊: SQL、MYSQL與數(shù)據(jù)庫(kù);SQL語(yǔ)句分類(lèi);SQL語(yǔ)句實(shí)戰(zhàn);數(shù)據(jù)類(lèi)型分類(lèi)(補(bǔ)充、非重點(diǎn))
寫(xiě)在前面的話(huà):如何閱讀本篇文章?
我們學(xué)習(xí)sql語(yǔ)言是因?yàn)橐蛿?shù)據(jù)庫(kù)打交道,從數(shù)據(jù)庫(kù)中提取數(shù)據(jù)。
首先要了解數(shù)據(jù)庫(kù)包含數(shù)據(jù)庫(kù)、表、列、記錄,而sql語(yǔ)句主要包含增刪改查詢(xún)。
所以我們學(xué)習(xí)就是3個(gè)目標(biāo)1個(gè)重點(diǎn)
1、數(shù)據(jù)庫(kù)的的增加刪除查詢(xún)修改
2、表的增加刪除查詢(xún)修改
3、列的增加刪除查詢(xún)修改
4、最重要的是記錄的查詢(xún)
帶上這4個(gè)問(wèn)題學(xué)習(xí)并歸類(lèi),可以很快建立自己的思維。當(dāng)然文章也是盡可能的按這種方式寫(xiě)的
一、SQL、 MYSQL與數(shù)據(jù)庫(kù)
SQL
1、 什么是SQL?
SQL是Structured Query Language(結(jié)構(gòu)化查詢(xún)語(yǔ)言)的縮寫(xiě),是一種專(zhuān)門(mén)用來(lái)與數(shù)據(jù)庫(kù)溝通的語(yǔ)言
2、 SQL的優(yōu)點(diǎn)?
SQL不是某個(gè)特定數(shù)據(jù)庫(kù)供應(yīng)商專(zhuān)有的語(yǔ)言,因此學(xué)習(xí)此語(yǔ)言幾乎能與所有數(shù)據(jù)庫(kù)打交道。
SQL簡(jiǎn)單易學(xué),它的語(yǔ)句都是由很強(qiáng)描述性的單詞組成。
SQL是一種強(qiáng)有力的語(yǔ)言,可以進(jìn)行非常復(fù)雜和高級(jí)的數(shù)據(jù)庫(kù)操作。
3、 學(xué)習(xí)SQL需要準(zhǔn)備什么?
下載軟件MYSQL。
關(guān)于MYSQL的下載網(wǎng)上有很多講解,上篇文章《MYSQL5.7.23MIS版本安裝圖解》里面也有安裝的講解,大家可以參考。
MYSQL
1、 什么是MYSQL?
MYSQL 是一種數(shù)據(jù)庫(kù)軟件,應(yīng)稱(chēng)為數(shù)據(jù)庫(kù)管理系統(tǒng)(DBMS)
2、 MYSQL的優(yōu)點(diǎn)?
MYSQL是免費(fèi)開(kāi)源,低成本的軟件;執(zhí)行速度快,性能好;簡(jiǎn)單易學(xué)
數(shù)據(jù)庫(kù)
1、 為什么要了解數(shù)據(jù)庫(kù)?
理解數(shù)據(jù)庫(kù)概念是掌握SQL的重要前提
2、 什么是數(shù)據(jù)庫(kù)?(database)
數(shù)據(jù)庫(kù)是保存有組織的數(shù)據(jù)的容器,通常是一個(gè)文件或者是一組文件。
3、 表(table)
表是結(jié)構(gòu)化文件,可以用來(lái)存儲(chǔ)某種特定類(lèi)型的數(shù)據(jù)。
4、 列(column)
列是由表組成
5、 行(row)
表中的一個(gè)記錄。表中的數(shù)據(jù)是按行儲(chǔ)存的,所保存的每個(gè)記錄儲(chǔ)存在自己的行內(nèi)。
感想:
第一部分內(nèi)容主要來(lái)自《MYSQL必知必會(huì)》,用幾百字介紹SQL、MYSQL、數(shù)據(jù)庫(kù),就是為了解決:是什么、做什么問(wèn)題。如果在學(xué)習(xí)SQL時(shí)理解數(shù)據(jù)庫(kù)非常重要,親親有時(shí)間可以參考其他數(shù)據(jù)庫(kù)基礎(chǔ)知識(shí)。
當(dāng)然自己也是非常想深入了解數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)軟件、SQL。不過(guò)要在下一輪學(xué)習(xí)中在進(jìn)行縱向深度學(xué)習(xí),現(xiàn)在的目標(biāo)是先橫向了解,盡快熟悉數(shù)據(jù)分析全局。
二、SQL語(yǔ)句分類(lèi)
在開(kāi)始SQL語(yǔ)句前,我們先回到第一部分SQL優(yōu)點(diǎn):SQL簡(jiǎn)單易學(xué),他的語(yǔ)句全都是由很強(qiáng)描述性的英語(yǔ)單詞組成,而且單詞數(shù)量并不多。
我們抓取三個(gè)關(guān)鍵詞:SQL簡(jiǎn)單、語(yǔ)句描述性強(qiáng)、數(shù)量少。SQL的確比較簡(jiǎn)單,下面幾頁(yè)P(yáng)PT中包含82%的SQL語(yǔ)句,學(xué)完后你也能稱(chēng)為入門(mén)數(shù)據(jù)分析了。
補(bǔ)充一點(diǎn)從專(zhuān)業(yè)的角度出發(fā),SQL語(yǔ)言可以分為四類(lèi)DDL、DML、DCL、DQL。下面也將從這四個(gè)方面講述SQL語(yǔ)句。(PS:聽(tīng)說(shuō)在面試的時(shí)候可能會(huì)問(wèn)到SQL語(yǔ)言的四大分類(lèi),同時(shí)SQL作為數(shù)據(jù)分析最重要的語(yǔ)言一定要打牢基礎(chǔ)。)

第一張圖是關(guān)于SQL語(yǔ)句的分類(lèi),可以分為四種DDL、DML、DCL、DQL


第四張圖是DDL表的創(chuàng)建、刪除、修改。這里的創(chuàng)建是創(chuàng)建列以及數(shù)據(jù)類(lèi)型、刪除是刪除列、修改指修改列名修改數(shù)據(jù)類(lèi)型??!
關(guān)于數(shù)據(jù)類(lèi)型有四類(lèi):數(shù)值型(整數(shù)、小數(shù))、浮點(diǎn)型、字符串型、日期時(shí)間型(在文章最后附上關(guān)于數(shù)據(jù)類(lèi)型的介紹)

第四張圖是對(duì)表記錄(內(nèi)容)的增刪改,DML
插入:insert into 表名(列名)values …
下面三張表是學(xué)習(xí)SQL語(yǔ)句的筆記,對(duì)我來(lái)說(shuō)非常重要。
比如修改列名、修改字段類(lèi)型就找了很久。





第六張圖是DQL查詢(xún)是整個(gè)SQL語(yǔ)句的重點(diǎn)。
感悟:
關(guān)于SQL我學(xué)習(xí)了兩門(mén)課程,其中“SOTON數(shù)據(jù)分析”課程目錄共18節(jié),其中10節(jié)都在講SQL的查詢(xún)語(yǔ)言,而在“MYSQL從入門(mén)到精通’”中課程目錄共57節(jié),其中9節(jié)在講述SQL語(yǔ)言的插敘。當(dāng)初我也是各種迷茫模糊,不知道應(yīng)該以哪個(gè)老師的內(nèi)容為標(biāo)準(zhǔn),甚至一度以表的新建、增加數(shù)據(jù)為核心。
后來(lái)看完《SQL必知必會(huì)》之后知道在SQL中最重要的就是DQL查詢(xún)語(yǔ)言。因?yàn)闀?shū)中的目錄和SOTON 的課程目錄相似,重點(diǎn)講述的內(nèi)容也一樣,于是自己把重心也轉(zhuǎn)向了DQL查詢(xún)語(yǔ)言。
所以想系統(tǒng)權(quán)威的學(xué)習(xí)某類(lèi)技能還是要多看書(shū)。




關(guān)于DQL語(yǔ)言總共有5張PPT,主要包括
1、數(shù)據(jù)查詢(xún)語(yǔ)言(select 列名 from 表名);
2、過(guò)濾語(yǔ)言(where);
3、通配符=模糊查詢(xún)(where like);
4、排序(order by),asc升序、desc降序;
5、聚合函數(shù):文本函數(shù)avg、sum、count、max、min,時(shí)間函數(shù)curtime()、now( )、datetime()
6、分組查詢(xún):group by
7、聯(lián)結(jié)表:inner jion 、left jion
8、聯(lián)和查詢(xún)=匯總函數(shù):union(去重)、union all(不去重)
9、子查詢(xún):一般用在from 后面,或者是where后面
下面的目錄是SOTON數(shù)據(jù)分析的課程目錄,主要以查詢(xún)?yōu)橹?/p>


SOTON數(shù)據(jù)分析課程里面的查詢(xún)語(yǔ)言雖然和“SQL從入門(mén)到精通”一樣,但這里自己還是在次總結(jié)。哈哈哈,主要是我自己的復(fù)習(xí)
1.3了解MYSQL:show databases,use 數(shù)據(jù)庫(kù)
1.4數(shù)據(jù)排序:order by、desc、asc(升序)
1.5過(guò)濾函數(shù):where、having(對(duì)分組函數(shù)過(guò)濾時(shí)用having)
1.6通配符:where like 、%
1.7處理函數(shù):文本處理函數(shù)rtime( ) len( ) upper() lower()substring() left()
1.8時(shí)間處理函數(shù):curtime、select curdate( )
1.9匯總函數(shù):max min avg count
1.10分組計(jì)算:group by
1.11子查詢(xún):常在from后面或者where后面
1.12表聯(lián)結(jié):inner jion、left jion
1.13組合查詢(xún):union
感悟:
之前在構(gòu)建文章框架的時(shí)候,本來(lái)是計(jì)劃第二部分為了解部分,后來(lái)文章在不斷的完善中才發(fā)現(xiàn)第二部分才是核心它幾乎總結(jié)了所有SQL語(yǔ)句(如同小學(xué)數(shù)學(xué)時(shí)背加減順序表),而自己之前似乎核心的第三部分屬于案例操作而已。
我們?cè)趯W(xué)習(xí)時(shí)要先掌握知識(shí)點(diǎn)在進(jìn)行實(shí)踐操作,不然也僅僅是知其然不知其所以然。
三、SQL語(yǔ)句實(shí)戰(zhàn)
案例部分主要是根據(jù)soton數(shù)據(jù)分析進(jìn)行操作。需要數(shù)據(jù)的可以留言或私聊。
1、查詢(xún)包含的數(shù)據(jù)庫(kù)

2、查詢(xún)sys數(shù)據(jù)庫(kù)中,表sys_config中包含的列名(show columns 可查詢(xún)數(shù)據(jù)類(lèi)型)

3、查詢(xún)city表中所有的列,并按照population 排序(降序)

4、查詢(xún)city表中的id name countrycode district population列,按照population降序,并且只選取100行

5、查詢(xún)id name countrycode district population列,并且population大于等于10萬(wàn)小于等于50萬(wàn)

6、過(guò)濾。注意and和or 在一起使用時(shí)的計(jì)算順序

7、通配符,篩選名字類(lèi)似a_c%的id name countrycode district population列

8、常用文本函數(shù)

9、文本函數(shù)。解釋substring(name,2,3)選擇name名字3個(gè)字母,從 第二個(gè)字母開(kāi)始,往后數(shù)3位

10、分組查詢(xún)group by 常用于from后面

11、對(duì)分組數(shù)據(jù)進(jìn)行過(guò)濾用having

12、子查詢(xún)。常用于from后面,或者where后面

13、返回當(dāng)前時(shí)間

14、聯(lián)結(jié)表inner jion\left jion

15、組合插敘,union不計(jì)算重復(fù)值,all union計(jì)算重復(fù)值

16、存儲(chǔ)篩選出來(lái)的數(shù)據(jù),并創(chuàng)建表

17、空值:is null空值、not null 非空

18、插入數(shù)據(jù)。在插入中對(duì)應(yīng)列的數(shù)據(jù)類(lèi)型要一致

19、創(chuàng)建表并確定列的數(shù)據(jù)類(lèi)型

20、保存數(shù)據(jù)。防止出錯(cuò)可以加if not exixts

21、時(shí)間撮里面的時(shí)間可以單獨(dú)提取出來(lái)

22、時(shí)間處理函數(shù)

感悟:
為了準(zhǔn)備這次實(shí)操截屏跟著視屏敲了2遍sql語(yǔ)言,準(zhǔn)備了3個(gè)小時(shí)??偨Y(jié)一句實(shí)操很重要。(需要數(shù)據(jù)的點(diǎn)文本結(jié)尾領(lǐng)取利)
本來(lái)就是半瓶水,也不是很懂。感悟在前面都發(fā)揮完了哈哈,也沒(méi)自己獨(dú)特的見(jiàn)解,甚至自己連提問(wèn)都不會(huì)
四、數(shù)據(jù)類(lèi)型分類(lèi)(補(bǔ)充、非重點(diǎn))
1、數(shù)據(jù)類(lèi)型分類(lèi):數(shù)值類(lèi)型、浮點(diǎn)類(lèi)型、字符串類(lèi)型、時(shí)間日期類(lèi)型

2、數(shù)值類(lèi)型:常用tintint、int

3、浮點(diǎn)類(lèi)型:常用decimal,更精確

4、字符串類(lèi)型:常用char\varchar,十萬(wàn)字的文本用text可儲(chǔ)存

5、時(shí)間類(lèi)型:常用timestamp

6、字段名修飾:常修飾數(shù)據(jù)類(lèi)型

ok,到這里sql就介紹完了,對(duì)于子查詢(xún)、表的創(chuàng)建、表聯(lián)結(jié)還不是很熟悉。后期邊學(xué)習(xí)新內(nèi)容邊復(fù)習(xí)sql!!
寫(xiě)這篇文章有兩個(gè)目的一是做分享、二是強(qiáng)迫自己輸出為以后復(fù)習(xí)做準(zhǔn)備。所以文章內(nèi)容比較多但總而言之都在介紹sql,理解記憶還是很容易。
有一個(gè)很重要的感悟是:
多思考,只有理解到才是自己的。下次在復(fù)習(xí)的時(shí)候用自己思維寫(xiě)一篇sql進(jìn)階。
接下來(lái)將開(kāi)始R和統(tǒng)計(jì)學(xué)的學(xué)習(xí),附上課程數(shù)據(jù):https://pan.baidu.com/s/1HZdmBl-jamup39dFqaw2qQ