MySQL中常見關(guān)鍵字的用法總結(jié)
GROUP BY用法
在MySQL中,GROUP BY語句用于將結(jié)果集按照一個(gè)或多個(gè)列進(jìn)行分組。它常與聚合函數(shù)(如SUM、COUNT、AVG等)一起使用,對(duì)分組后的數(shù)據(jù)進(jìn)行匯總計(jì)算。
GROUP BY語句具體怎么用呢,接下來詳細(xì)說明:
基本語法:
SELECT 列1, 列2, ..., 聚合函數(shù)
FROM 表名
GROUP BY 列1, 列2, ...
在GROUP BY子句中列出了要分組的列。查詢結(jié)果將根據(jù)這些列的值進(jìn)行分組。
聚合函數(shù)是什么,怎么用?
可以在SELECT語句中使用各種聚合函數(shù)來計(jì)算分組后的結(jié)果,例如SUM、COUNT、AVG、MAX、MIN等。在GROUP BY語句中,聚合函數(shù)通常用于計(jì)算每個(gè)分組的值。
- 過濾分組: 我們可以在GROUP BY語句之前使用HAVING子句進(jìn)行分組后的結(jié)果過濾。HAVING子句類似于WHERE子句,但它用于過濾分組后的數(shù)據(jù)。
- 排序分組: 可以在GROUP BY語句之后使用ORDER BY子句對(duì)分組后的結(jié)果進(jìn)行排序。我們可以根據(jù)列名指定排序順序以及使用ASC(升序)或DESC(降序)關(guān)鍵字。
- 多列分組: GROUP BY語句可以根據(jù)一個(gè)或多個(gè)列進(jìn)行分組。列出的列將成為分組的依據(jù),組合形成唯一的分組鍵。例如:
SELECT 列1, 列2, ..., 聚合函數(shù)
FROM 表名
GROUP BY 列1, 列2, ...
在使用GROUP BY時(shí),我們需要注意的是:
SELECT語句中的列必須是GROUP BY子句中列出的列或聚合函數(shù)。
如果列中包含非聚合列且未在GROUP BY子句中列出,MySQL會(huì)根據(jù)該列進(jìn)行隱式分組,但結(jié)果可能不符合預(yù)期。
GROUP BY子句中可以使用列的別名,而SELECT子句中不能使用。
我們使用一個(gè)小例子,演示如何使用GROUP BY語句:
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;
以上小栗子中,我們按照部門分組員工信息,計(jì)算每個(gè)部門的員工總數(shù)和平均薪資,并過濾出平均薪資超過5000的部門,并按照員工總數(shù)降序排序。
ORDER BY用法
MySQL中,ORDER BY子句用于對(duì)查詢結(jié)果進(jìn)行排序。它可以按照一個(gè)或多個(gè)列進(jìn)行升序(ASC)或降序(DESC)排序。
下面講解一下ORDER BY子句的詳細(xì)用法說明:
首先介紹下其基本語法:
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ù)。
通過一個(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ù)。它可以幫助我們分頁顯示結(jié)果,或者僅返回某個(gè)范圍內(nèi)的行。
下面是LIMIT關(guān)鍵字的詳細(xì)用法說明:
首先還是先介紹基本語法:
SELECT 列1, 列2, ...
FROM 表名
LIMIT 行數(shù);
LIMIT子句會(huì)限制查詢結(jié)果返回的行數(shù)。我們可以指定要返回的行數(shù),例如10表示返回前10行。
分頁查詢: 在實(shí)際應(yīng)用中,常常需要進(jìn)行分頁查詢,只返回指定頁碼的結(jié)果。在LIMIT子句中,可以指定兩個(gè)參數(shù),第一個(gè)參數(shù)為起始位置(偏移量),第二個(gè)參數(shù)為返回的行數(shù)。
舉個(gè)栗子:
SELECT 列1, 列2, ...
FROM 表名
LIMIT 偏移量, 行數(shù);
偏移量表示從查詢結(jié)果的哪一行開始返回結(jié)果,行數(shù)表示返回的行數(shù)。
偏移量的計(jì)算公式為:(頁碼 - 1) * 每頁行數(shù)
例如,如果每頁顯示10行數(shù)據(jù),要查詢第3頁的數(shù)據(jù),則偏移量為 (3-1)*10 = 20,表示從結(jié)果的第21行開始返回。
可選的簡化寫法: LIMIT子句還有一種簡化寫法,只指定要返回的行數(shù),而不指定偏移量。
舉個(gè)栗子:
SELECT 列1, 列2, ...
FROM 表名
LIMIT 行數(shù) OFFSET 偏移量;
這種寫法和第一種情況是等價(jià)的。
限制查詢結(jié)果: LIMIT子句也可以用于限制查詢結(jié)果的返回范圍。比如,我們可以指定返回前10條記錄中的第5到第8行。
舉個(gè)栗子:
SELECT 列1, 列2, ...
FROM 表名
LIMIT 4, 8;
上面小栗子,返回結(jié)果將從第5行開始,返回8行數(shù)據(jù)。
因此我們需要注意的是,在使用LIMIT子句時(shí),偏移量和行數(shù)都應(yīng)該是非負(fù)整數(shù)。
到此這篇關(guān)于MySQL中常見關(guān)鍵字的用法總結(jié)的文章就介紹到這了,更多相關(guān)MySQL關(guān)鍵字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
MySQL的事務(wù)的基本要素和事務(wù)隔離級(jí)別詳解
這篇文章主要介紹了MySQL的事務(wù)的基本要素和事務(wù)隔離級(jí)別,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04MYSQL 性能分析器 EXPLAIN 用法實(shí)例分析
這篇文章主要介紹了MYSQL 性能分析器 EXPLAIN 用法,結(jié)合實(shí)例形式分析了MYSQL 性能分析器 EXPLAIN 基本功能、使用方法及操作注意事項(xiàng),需要的朋友可以參考下2020-05-05一次Mysql使用IN大數(shù)據(jù)量的優(yōu)化記錄
這篇文章主要給大家介紹了關(guān)于Mysql使用IN大數(shù)據(jù)量的優(yōu)化的實(shí)戰(zhàn)記錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09MySQL中聚簇索引與非聚簇索引的實(shí)現(xiàn)
MySQL數(shù)據(jù)庫中,聚簇索引和非聚簇索引是提高查詢效率的關(guān)鍵,聚簇索引決定數(shù)據(jù)的物理存儲(chǔ)順序,通常由主鍵或UNIQUE索引構(gòu)成,非聚簇索引則通過指針定位數(shù)據(jù)行,適合訪問數(shù)據(jù)子集,下面就來具體介紹一下,感興趣的可以了解一下2024-09-09Mysql如何在linux中實(shí)現(xiàn)定時(shí)備份
這篇文章主要介紹了Mysql如何在linux中實(shí)現(xiàn)定時(shí)備份,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09mysql could not be resolved: Name or service not known
今天查看mysql日志的時(shí)候發(fā)現(xiàn)[Warning] IP address '10.0.0.220' could not be resolved: Name or service not known,原來是mysql DNS反解:skip-name-resolve的原因,屏蔽一下就可以了2015-08-08