上一篇分享了數據庫的基礎知識,以及如何安裝數據庫,今天這篇分享數據庫操作和SQL。
SQL全稱(chēng)是 Structured Query Language,翻譯后就是結構化查詢(xún)語(yǔ)言,是一種數據庫查詢(xún)和程序設計語(yǔ)言,用于存取數據以及查詢(xún)、更新和管理關(guān)系數據庫系統。
至于 ORACLE、DB2、Sybase、SQLServer、MySQL、MS Access等都是數據庫,雖然語(yǔ)法上有差異,但是基本上都是大同小異。作為一名數據從業(yè)者,雖然市面上有很多很智能很自助的數據工具,甚至有的拖拖拽拽就能實(shí)現,但作為一名報表工程師、數據分析師,不懂一點(diǎn)SQL是絕逼不行的。
之前很多文章對于SQL都一筆帶過(guò),輕描帶寫(xiě),略忽視這項基本技能的重要性,所以今天就來(lái)講講如何學(xué)習SQL。
市面上都大量的書(shū)籍和教學(xué)視頻,這里就幫大家提煉核心要點(diǎn),給個(gè)學(xué)習方向。
本次的文章主要從以下幾個(gè)方面進(jìn)行說(shuō)明,大家可以參考著(zhù)學(xué)習。
SQL快速學(xué)習路線(xiàn)
數據庫表基礎操作
SQL基礎語(yǔ)句
SQL高級語(yǔ)句
零基礎自學(xué)SQL時(shí)通常會(huì )遇到2個(gè)坑:
一坑:學(xué)習之前先安裝數據庫軟件,可以是SQL Sever,也可以是MySQL。對于新人而言,安裝數據庫軟件挺費時(shí)間,坑太多。我剛上大學(xué)那會(huì )要求2天內自學(xué)SQL,結果我花了1天時(shí)間安裝SQL Sever。前一篇文章分享了MySQL的安裝教程,剛開(kāi)始學(xué)用不上太龐雜的功能,所以推薦小而美的MySQL,SQL Sever也是可以的。
二坑:一上來(lái)就背SQL語(yǔ)法。我看過(guò)太多新人在那邊吭哧吭哧做筆記背SQL,個(gè)人不贊成這種學(xué)法,不實(shí)踐記不住。就和Excel函數一樣,理解含義和如何使用,關(guān)鍵時(shí)候去w3school查詢(xún)一下就行了,以后用得多了自然就掌握了。(后臺回復關(guān)鍵詞“SQL”獲得)
SQL學(xué)習路線(xiàn)
1、下載安裝MySQL,或者安裝軟件phpstudy(這個(gè)軟件自帶了mysql數據庫,而且安裝啟動(dòng)方便)。
2、我這里用的是phpstudy,打開(kāi)phpstudy后,點(diǎn)擊下圖中的啟動(dòng),點(diǎn)擊后數據庫服務(wù)就會(huì )啟動(dòng)了。
3、下載安裝Navicat軟件
這個(gè)軟件可以輕松連接數據庫,我們可以在這個(gè)軟件中練習學(xué)習SQL語(yǔ)法
4、使用Navicat建立數據庫連接
點(diǎn)擊文件——新建連接,連接名隨便填寫(xiě),比如我寫(xiě)的是“本地”。主機名、端口都不需要修改,用戶(hù)名和密碼都是root(因為我們安裝的phpstudy里的mysql默認用戶(hù)名密碼就是root),點(diǎn)擊連接測試顯示為成功后點(diǎn)確定保存。
以后再次訪(fǎng)問(wèn)時(shí),雙擊即可。
5、下載習題進(jìn)行學(xué)習,內含習題需要用到的數據表。
6、導入第5步中下載的數據表。(后臺回復關(guān)鍵詞“SQL”獲得)
右擊第4步中的“本地”,新建一個(gè)數據庫test1,雙擊打開(kāi)新建的數據庫(打開(kāi)后顏色是綠色)。
拖拽剛才下載的數據表文件(sqltest1.sql)到test1上面。
這時(shí)會(huì )出現上述彈窗,點(diǎn)擊開(kāi)始,等待導入完成后,點(diǎn)擊關(guān)閉
在左側空白處右擊,選擇“刷新”,即可看到剛才導入的數據表了。
7、打開(kāi)sql語(yǔ)法編輯器
如下圖點(diǎn)擊查詢(xún)——新建查詢(xún),在空白處輸入sql語(yǔ)法,點(diǎn)擊運行,如果輸入錯誤會(huì )有報錯,輸入正確則會(huì )返回查詢(xún)內容。
8、邊做邊學(xué)
打開(kāi)第一部分習題,邊做邊學(xué),通過(guò)查詢(xún)w3c的sql語(yǔ)法手冊完成
9、鞏固練習
嘗試不看sql語(yǔ)法手冊,獨立完成第二部分習題。
以上是sql的學(xué)習路徑,接下來(lái)是sql語(yǔ)句的學(xué)習,掌握使用場(chǎng)景和含義,具體語(yǔ)法就不做解釋了,大家參考w3c的sql語(yǔ)法手冊學(xué)習。這里我歸了下類(lèi),挑重點(diǎn)講。
首先數據庫表必掌握的基礎操作,建表、刪表、往表里增數據、往表里刪數據以及最重要的取數等等。
1、CREATE TABLE(建表)
怎么著(zhù)也得先建立表~

當你建表成功后,發(fā)現忘記添加主鍵,或者忘記添加外鍵,莫著(zhù)急。使用以下咒語(yǔ)即可:

建好的表如下:

emp表

orders表
2、INSERT(插入)
向表中插入數據


插入數據后的emp表

插入數據后的orders表

3、UPDATE(更新)

4、DELETE(刪除)

在使用delete刪除emp表中數據時(shí),要注意該表與其他表是否存在關(guān)聯(lián)關(guān)系,比如:外鍵。emp表id是表orders的外鍵,如果要刪除emp表中的id,得先刪除orders表中的外鍵。
5、DISTINCT(去重)
在表中,可能會(huì )包含重復值,這并不成問(wèn)題。不過(guò),有時(shí)你也許希望僅僅返回唯一不同的值。使用distinct關(guān)鍵字進(jìn)行處理,用于返回唯一不同的值。
注意:distinct關(guān)鍵字是去重!去重!去重!*把列中的重復值去掉!
曾經(jīng)我在筆試的時(shí)候,有道SQL考題:請寫(xiě)出表中所有重復的name的所有數據。我當時(shí)沒(méi)反應過(guò)來(lái),直接就用了distinct關(guān)鍵字,后來(lái)就....


6、Select(取數)
SELECT 語(yǔ)句用于從表中選取數據,結果被存儲在一個(gè)結果表中(稱(chēng)為結果集)。這是以后最常用的操作,占據你90%。
SQL SELECT 語(yǔ)法
SELECT 列名稱(chēng) FROM 表名稱(chēng)
以及:
SELECT * FROM 表名稱(chēng)
比如需獲取名為 "LastName" 和 "FirstName" 的列的內容(從名為 "Persons" 的數據庫表),請使用類(lèi)似這樣的 SELECT 語(yǔ)句:
SELECT LastName,FirstName FROM Persons
SELECT通常結合其他函數和語(yǔ)法使用。
在實(shí)際的SQL使用中,肯定會(huì )涉及到有關(guān)函數的使用,這里簡(jiǎn)單介紹幾種初學(xué)時(shí)必學(xué)的函數類(lèi)型。
1、AVG()
AVG 函數返回數值列的平均值。NULL 值不包括在計算中。

2、COUNT()
COUNT( ) 函數用于返回匹配指定條件的行數。

3、MAX()
MAX函數返回指定列的最大值,NULL值不包括在計算中

4、MIN()
MIN函數返回的指定列的最小值,NULL值不包括在計算中

5、SUM()
SUM函數返回指定列的總數

6、ROUND()
ROUND 函數用于把數值字段舍入為指定的小數位數

round函數需要的參數

7、FORMAT()
FORMAT 函數用于對字段的顯示進(jìn)行格式化

format函數需要的參數
這一部分的內容是通常用到的,屬于最開(kāi)始學(xué)習SQL知識時(shí)必須要熟練的,我這里大致列出幾項。
1、LIMIT

2、LIKE
一般配合where使用,搜索條件中的指定模式

在上面我們可以看到,通配符“%”的使用方法,所以通配符必須要配合like 運算符一塊使用。
通配符還有以下幾種:

3、IN
從字面意思就可以知道它的作用是什么了

4、JOIN
聯(lián)表運算符JOIN,該運算符是用于將兩個(gè)或者兩個(gè)以上的表進(jìn)行關(guān)聯(lián),并從這些表中查詢(xún)數據。
對于聯(lián)表來(lái)說(shuō),通過(guò)使用主鍵(primary key)和外鍵(foreign key)也可以建立連接。

除了上述直接使用條件關(guān)聯(lián),下面我們可以用可讀性更高的INNER JOIN來(lái)寫(xiě)

還有其他幾種方連接方式(外連接):
LEFT JOIN:就算右表中沒(méi)有匹配,也從左表返回所有的行
RIGHT JOIN:即使左表沒(méi)有匹配,也行右表返回所有的行
FULL JOIN:只要有一個(gè)表存在著(zhù)匹配,就返回行
5、ALTER
穿插介紹一下alter,前面的例子中已經(jīng)包含了幾種alter使用方法。

6、UNION
UNION 操作符用于合并兩個(gè)或多個(gè) SELECT 語(yǔ)句的結果集。
請注意,UNION 內部的 SELECT 語(yǔ)句必須擁有相同數量的列。列也必須擁有相似的數據類(lèi)型。同時(shí),每條 SELECT 語(yǔ)句中的列的順序必須相同。
上面引用的意思就是:道不同,不相為謀!
UNION和UNION ALL命令幾乎是等效的,不過(guò)加了“ALL”,就會(huì )列出所有的值。

注意:因為其也具有“唯一性”,容易和PRIMARY KEY混淆。面試或筆試??純烧叩牟煌?,在這里說(shuō)明一下:
與PRIMARY KEY不同的是,每個(gè)表可以有多個(gè) UNIQUE 約束,但是每個(gè)表只能有一個(gè) PRIMARY KEY 約束。
為表添加UNION,這里給出使用的SQL語(yǔ)法。

7、AUTO-INCREMENT(自增)
在運用中,我們希望在每添加一條數據后,自動(dòng)的為我們的主鍵創(chuàng )建值。

8、ORDER BY
在前面中已經(jīng)使用到了有關(guān)order by的SQL語(yǔ)句,order by該語(yǔ)句用于對結果集進(jìn)行排序,默認是進(jìn)行ASC正序排序(從小到大)。
排序的兩種方式:
ASC:升序(從小到大)
DESC:降序(從大到?。?/p>
舉栗:


ASC排序
對于DESC排序,這里就不進(jìn)行舉例了,大家可以自己寫(xiě)SQL試一下。
9、GROUP BY
通常配合合計函數使用,根據一個(gè)或多個(gè)列對結果集進(jìn)行分組。

具體的用法在介紹函數時(shí)會(huì )涉及到。
10、HAVING
在上面的例子中,我們使用where關(guān)鍵字來(lái)增加查詢(xún)條件,這里增加having字句是因為,where關(guān)鍵字無(wú)法與合計函數一起使用
同樣引用上面的SQL語(yǔ)句。
具體的用法在介紹函數時(shí)會(huì )涉及到。
11、DEFAULT
DEFAULT約束用于向列中插入默認值。

本次文章中寫(xiě)的相關(guān)知識點(diǎn)是我以前在學(xué)習中隨手記錄的,對一些SQL大牛來(lái)說(shuō),這些已經(jīng)是耳熟能詳了。會(huì )不會(huì )讓你們產(chǎn)生一種灌水的錯覺(jué)????哈哈~
聯(lián)系客服