MySQL中常見(jiàn)關(guān)鍵字的用法總結(jié)
GROUP BY用法
在MySQL中,GROUP BY語(yǔ)句用于將結(jié)果集按照一個(gè)或多個(gè)列進(jìn)行分組。它常與聚合函數(shù)(如SUM、COUNT、AVG等)一起使用,對(duì)分組后的數(shù)據(jù)進(jìn)行匯總計(jì)算。
GROUP BY語(yǔ)句具體怎么用呢,接下來(lái)詳細(xì)說(shuō)明:
基本語(yǔ)法:
SELECT 列1, 列2, ..., 聚合函數(shù)
FROM 表名
GROUP BY 列1, 列2, ...
在GROUP BY子句中列出了要分組的列。查詢結(jié)果將根據(jù)這些列的值進(jìn)行分組。
聚合函數(shù)是什么,怎么用?
可以在SELECT語(yǔ)句中使用各種聚合函數(shù)來(lái)計(jì)算分組后的結(jié)果,例如SUM、COUNT、AVG、MAX、MIN等。在GROUP BY語(yǔ)句中,聚合函數(shù)通常用于計(jì)算每個(gè)分組的值。
- 過(guò)濾分組: 我們可以在GROUP BY語(yǔ)句之前使用HAVING子句進(jìn)行分組后的結(jié)果過(guò)濾。HAVING子句類似于WHERE子句,但它用于過(guò)濾分組后的數(shù)據(jù)。
- 排序分組: 可以在GROUP BY語(yǔ)句之后使用ORDER BY子句對(duì)分組后的結(jié)果進(jìn)行排序。我們可以根據(jù)列名指定排序順序以及使用ASC(升序)或DESC(降序)關(guān)鍵字。
- 多列分組: GROUP BY語(yǔ)句可以根據(jù)一個(gè)或多個(gè)列進(jìn)行分組。列出的列將成為分組的依據(jù),組合形成唯一的分組鍵。例如:
SELECT 列1, 列2, ..., 聚合函數(shù)
FROM 表名
GROUP BY 列1, 列2, ...
在使用GROUP BY時(shí),我們需要注意的是:
SELECT語(yǔ)句中的列必須是GROUP BY子句中列出的列或聚合函數(shù)。
如果列中包含非聚合列且未在GROUP BY子句中列出,MySQL會(huì)根據(jù)該列進(jìn)行隱式分組,但結(jié)果可能不符合預(yù)期。
GROUP BY子句中可以使用列的別名,而SELECT子句中不能使用。
我們使用一個(gè)小例子,演示如何使用GROUP BY語(yǔ)句:
SELECT department, COUNT(*) as total_employees, AVG(salary) as avg_salary FROM employees GROUP BY department HAVING avg_salary > 5000 ORDER BY total_employees DESC;
以上小栗子中,我們按照部門(mén)分組員工信息,計(jì)算每個(gè)部門(mén)的員工總數(shù)和平均薪資,并過(guò)濾出平均薪資超過(guò)5000的部門(mén),并按照員工總數(shù)降序排序。
ORDER BY用法
MySQL中,ORDER BY子句用于對(duì)查詢結(jié)果進(jìn)行排序。它可以按照一個(gè)或多個(gè)列進(jìn)行升序(ASC)或降序(DESC)排序。
下面講解一下ORDER BY子句的詳細(xì)用法說(shuō)明:
首先介紹下其基本語(yǔ)法:
SELECT 列1, 列2, ...
FROM 表名
ORDER BY 列1 [ASC|DESC], 列2 [ASC|DESC]
在ORDER BY子句中,我們可以使用一個(gè)或多個(gè)列作為排序依據(jù),并為每個(gè)列指定排序順序,ASC為升序(默認(rèn)),DESC為降序。
單列排序: 如果只需要按照單個(gè)列進(jìn)行排序,可以直接指定列名并選擇排序順序。
舉個(gè)栗子:
SELECT 列1, 列2, ...
FROM 表名
ORDER BY 列1 DESC;
上面是,根據(jù)列1的值進(jìn)行降序排序。
多列排序: 如果需要按照多個(gè)列進(jìn)行排序,可以在ORDER BY子句中指定多個(gè)列,并為每個(gè)列選擇排序順序。
例如:
SELECT 列1, 列2, ...
FROM 表名
ORDER BY 列1 DESC, 列2 ASC;
上面是,首先根據(jù)列1的值進(jìn)行降序排序,如果出現(xiàn)相同的值,則根據(jù)列2的值進(jìn)行升序排序。
排序NULL值: 可以使用NULLS FIRST或NULLS LAST關(guān)鍵字指定空值在排序中的位置。NULLS FIRST表示空值排在前面,NULLS LAST表示空值排在后面。
例如:
SELECT 列1, 列2, ...
FROM 表名
ORDER BY 列1 NULLS LAST;
上面上,空值將排在列1的排序結(jié)果的最后。
我們?cè)谑褂肙RDER BY關(guān)鍵字時(shí)需要注意,在ORDER BY子句中可以使用列的別名,但不能使用SELECT子句中的表達(dá)式或聚合函數(shù)。
通過(guò)一個(gè)栗子,為大家演示如何使用ORDER BY子句:
SELECT name, age, salary FROM employees ORDER BY salary DESC, age ASC;
上面上,我們按照薪資降序排序,并且對(duì)于相同薪資的員工,按照年齡升序排序。
因此,ORDER BY子句在MySQL中用于對(duì)查詢結(jié)果進(jìn)行排序。我們可以指定一個(gè)或多個(gè)列,并選擇排序順序。
LIMIT關(guān)鍵字用法
MySQL中,LIMIT關(guān)鍵字用于限制查詢結(jié)果的返回行數(shù)。它可以幫助我們分頁(yè)顯示結(jié)果,或者僅返回某個(gè)范圍內(nèi)的行。
下面是LIMIT關(guān)鍵字的詳細(xì)用法說(shuō)明:
首先還是先介紹基本語(yǔ)法:
SELECT 列1, 列2, ...
FROM 表名
LIMIT 行數(shù);
LIMIT子句會(huì)限制查詢結(jié)果返回的行數(shù)。我們可以指定要返回的行數(shù),例如10表示返回前10行。
分頁(yè)查詢: 在實(shí)際應(yīng)用中,常常需要進(jìn)行分頁(yè)查詢,只返回指定頁(yè)碼的結(jié)果。在LIMIT子句中,可以指定兩個(gè)參數(shù),第一個(gè)參數(shù)為起始位置(偏移量),第二個(gè)參數(shù)為返回的行數(shù)。
舉個(gè)栗子:
SELECT 列1, 列2, ...
FROM 表名
LIMIT 偏移量, 行數(shù);
偏移量表示從查詢結(jié)果的哪一行開(kāi)始返回結(jié)果,行數(shù)表示返回的行數(shù)。
偏移量的計(jì)算公式為:(頁(yè)碼 - 1) * 每頁(yè)行數(shù)
例如,如果每頁(yè)顯示10行數(shù)據(jù),要查詢第3頁(yè)的數(shù)據(jù),則偏移量為 (3-1)*10 = 20,表示從結(jié)果的第21行開(kāi)始返回。
可選的簡(jiǎn)化寫(xiě)法: LIMIT子句還有一種簡(jiǎn)化寫(xiě)法,只指定要返回的行數(shù),而不指定偏移量。
舉個(gè)栗子:
SELECT 列1, 列2, ...
FROM 表名
LIMIT 行數(shù) OFFSET 偏移量;
這種寫(xiě)法和第一種情況是等價(jià)的。
限制查詢結(jié)果: LIMIT子句也可以用于限制查詢結(jié)果的返回范圍。比如,我們可以指定返回前10條記錄中的第5到第8行。
舉個(gè)栗子:
SELECT 列1, 列2, ...
FROM 表名
LIMIT 4, 8;
上面小栗子,返回結(jié)果將從第5行開(kāi)始,返回8行數(shù)據(jù)。
因此我們需要注意的是,在使用LIMIT子句時(shí),偏移量和行數(shù)都應(yīng)該是非負(fù)整數(shù)。
到此這篇關(guān)于MySQL中常見(jiàn)關(guān)鍵字的用法總結(jié)的文章就介紹到這了,更多相關(guān)MySQL關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL實(shí)現(xiàn)身份鑒別的項(xiàng)目實(shí)踐
本文主要介紹了MySQL數(shù)據(jù)庫(kù)身份鑒別的有效性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-11-11
linux配置mysql數(shù)據(jù)庫(kù)遠(yuǎn)程連接失敗的解決方法
這篇文章主要為大家詳細(xì)介紹了linux配置mysql數(shù)據(jù)庫(kù)遠(yuǎn)程連接失敗的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
MySQL通過(guò)實(shí)例化對(duì)象參數(shù)查詢實(shí)例講解
在本篇文章里我們給大家分享了關(guān)于MySQL如何通過(guò)實(shí)例化對(duì)象參數(shù)查詢數(shù)據(jù)的相關(guān)知識(shí)點(diǎn)內(nèi)容,有需要的朋友們可以測(cè)試參考下。2018-10-10
mysql-connector-java.jar包的下載實(shí)踐
本文詳細(xì)介紹了如何從MySQL官方網(wǎng)站下載mysql-connector-java.jar包的步驟,包括訪問(wèn)官網(wǎng)、選擇下載選項(xiàng)、選擇Connector/J、下載PlatformIndependent版本、進(jìn)行下載等2026-01-01
mysql給字段添加默認(rèn)值的實(shí)現(xiàn)
在MySQL中可以使用語(yǔ)句來(lái)為現(xiàn)有字段添加默認(rèn)值,或者在創(chuàng)建表時(shí)直接指定默認(rèn)值,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07
Mysql和文件系統(tǒng)的關(guān)聯(lián)詳情
這篇文章主要介紹了Mysql和文件系統(tǒng)的關(guān)聯(lián)詳情,Mysql常用的存儲(chǔ)引擎如InnoDB、MyISAM采用的是文件存儲(chǔ),自然和文件系統(tǒng)掛鉤,那么Mysql都有哪些地方用到了文件系統(tǒng)呢,下面我們一起進(jìn)入文章學(xué)習(xí)詳細(xì)內(nèi)容吧2022-09-09
MySQL 8.0.18 Hash Join不支持left/right join左右連接問(wèn)題
在MySQL 8.0.18中,增加了Hash Join新功能,它適用于未創(chuàng)建索引的字段,做等值關(guān)聯(lián)查詢。這篇文章給大家介紹MySQL 8.0.18 Hash Join不支持left/right join左右連接,感興趣的朋友一起看看吧2019-11-11

