欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL分組查詢、排序查詢、分頁查詢以及執(zhí)行順序

 更新時間:2024年02月17日 10:46:34   作者:嶼小夏  
MySQL數(shù)據(jù)查詢是數(shù)據(jù)庫操作中最常見的操作之一,它可以幫助我們從數(shù)據(jù)庫中獲取所需的數(shù)據(jù),下面這篇文章主要給大家介紹了關(guān)于MySQL分組查詢、排序查詢、分頁查詢以及執(zhí)行順序的相關(guān)資料,需要的朋友可以參考下

前言

DQL(Data Query Language)是SQL中最重要的語言類型之一,用于查詢數(shù)據(jù)庫中表的記錄。在日常業(yè)務(wù)系統(tǒng)中,查詢操作頻率高于增刪改操作。本文將深入探討DQL的分組查詢、排序查詢和分頁查詢等常見操作,為讀者提供全面的DQL查詢知識。

一. 分組查詢

1.1 語法

SELECT 字段列表 FROM 表名 [ WHERE 條件 ] GROUP BY 分組字段名 [ HAVING 分組后過濾條件 ];

1.2 where與having區(qū)別

  • 執(zhí)行時機不同:where是分組之前進行過濾,不滿足where條件,不參與分組;而having是分組之后對結(jié)果進行過濾。
  • 判斷條件不同:where不能對聚合函數(shù)進行判斷,而having可以。

1.3 注意事項:

  • 分組之后,查詢的字段一般為聚合函數(shù)和分組字段,查詢其他字段無任何意義。
  • 執(zhí)行順序: where > 聚合函數(shù) > having 。
  • 支持多字段分組, 具體語法為 : group by columnA,columnB

1.4 案例:

A. 根據(jù)性別分組 , 統(tǒng)計男性員工 和 女性員工的數(shù)量

select gender, count(*) from emp group by gender ;

B. 根據(jù)性別分組 , 統(tǒng)計男性員工 和 女性員工的平均年齡

select gender, avg(age) from emp group by gender ;

C. 查詢年齡小于45的員工 , 并根據(jù)工作地址分組 , 獲取員工數(shù)量大于等于3的工作地址

select workaddress, count(*) address_count from emp where age < 45 group byworkaddress having address_count >= 3;

D. 統(tǒng)計各個工作地址上班的男性及女性員工的數(shù)量

select workaddress, gender, count(*) '數(shù)量' from emp group by gender , workaddress;

二. 排序查詢

排序在日常開發(fā)中是非常常見的一個操作,有升序排序,也有降序排序。

image-20231220085503952

2.1 語法

SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;

2.2 排序方式

  • ASC : 升序(默認值)
  • DESC: 降序

2.3 注意事項:

  • 如果是升序, 可以不指定排序方式ASC ;
  • 如果是多字段排序,當(dāng)?shù)谝粋€字段值相同時,才會根據(jù)第二個字段進行排序 ;

2.4 案例:

A. 根據(jù)年齡對公司的員工進行升序排序

select * from emp order by age asc;
select * from emp order by age;

B. 根據(jù)入職時間, 對員工進行降序排序

select * from emp order by entrydate desc;

C. 根據(jù)年齡對公司的員工進行升序排序 , 年齡相同 , 再按照入職時間進行降序排序

select * from emp order by age asc , entrydate desc;

三. 分頁查詢

分頁操作在業(yè)務(wù)系統(tǒng)開發(fā)時,也是非常常見的一個功能,我們在網(wǎng)站中看到的各種各樣的分頁條,后臺都需要借助于數(shù)據(jù)庫的分頁操作。

3.1 語法

SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查詢記錄數(shù) ;

3.2 注意事項:

  • 起始索引從0開始,起始索引 = (查詢頁碼 - 1)* 每頁顯示記錄數(shù)。
  • 分頁查詢是數(shù)據(jù)庫的方言,不同的數(shù)據(jù)庫有不同的實現(xiàn),MySQL中是LIMIT。
  • 如果查詢的是第一頁數(shù)據(jù),起始索引可以省略,直接簡寫為 limit 10。

3.3 案例:

A. 查詢第1頁員工數(shù)據(jù), 每頁展示10條記錄

select * from emp limit 0,10;
select * from emp limit 10;

B. 查詢第2頁員工數(shù)據(jù), 每頁展示10條記錄 --------> (頁碼-1)*頁展示記錄數(shù)

select * from emp limit 10,10;

四. 執(zhí)行順序

在講解DQL語句的具體語法之前,我們已經(jīng)講解了DQL語句的完整語法,及編寫順序,接下來,我們要來說明的是DQL語句在執(zhí)行時的執(zhí)行順序,也就是先執(zhí)行那一部分,后執(zhí)行那一部分。

4.1 驗證

查詢年齡大于15的員工姓名、年齡,并根據(jù)年齡進行升序排序。

select name , age from emp where age > 15 order by age asc;

在查詢時,我們給emp表起一個別名 e,然后在select 及 where中使用該別名。

select e.name , e.age from emp e where e.age > 15 order by age asc;

執(zhí)行上述SQL語句后,我們看到依然可以正常的查詢到結(jié)果,此時就說明: from 先執(zhí)行, 然后where 和 select 執(zhí)行。那 where 和 select 到底哪個先執(zhí)行呢?

此時,此時我們可以給select后面的字段起別名,然后在 where 中使用這個別名,然后看看是否可以執(zhí)行成功。

select e.name ename , e.age eage from emp e where eage > 15 order by age asc;

執(zhí)行上述SQL報錯了:

由此我們可以得出結(jié)論: from 先執(zhí)行,然后執(zhí)行 where , 再執(zhí)行select 。

接下來,我們再執(zhí)行如下SQL語句,查看執(zhí)行效果:

select e.name ename , e.age eage from emp e where e.age > 15 order by eage asc;

結(jié)果執(zhí)行成功。 那么也就驗證了: order by 是在select 語句之后執(zhí)行的。

綜上所述,我們可以看到DQL語句的執(zhí)行順序為: from … where … group by …having … select … order by … limit …

全篇總結(jié)

本文詳細介紹了DQL(Data Query Language)的分組查詢、排序查詢和分頁查詢等常見操作,包括語法、注意事項和實例演示。通過學(xué)習(xí)本文,讀者將掌握使用DQL進行數(shù)據(jù)庫查詢的基本技能,為日常數(shù)據(jù)庫操作提供了重要的指導(dǎo)和實際應(yīng)用知識。

相關(guān)文章

  • mysql時間格式和Java時間格式的對應(yīng)方式

    mysql時間格式和Java時間格式的對應(yīng)方式

    這篇文章主要介紹了mysql時間格式和Java時間格式的對應(yīng)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • SQL 四種連接-左外連接、右外連接、內(nèi)連接、全連接詳解

    SQL 四種連接-左外連接、右外連接、內(nèi)連接、全連接詳解

    這篇文章主要介紹了SQL 四種連接-左外連接、右外連接、內(nèi)連接、全連接詳解的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • MySQL阻塞與死鎖的解決

    MySQL阻塞與死鎖的解決

    本文主要介紹了MySQL阻塞與死鎖的解決,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-09-09
  • mysql中判斷記錄是否存在方法比較

    mysql中判斷記錄是否存在方法比較

    把數(shù)據(jù)寫入到數(shù)據(jù)庫的時,常常會碰到先要檢測要插入的記錄是否存在,然后決定是否要寫入。
    2011-07-07
  • MySQL筑基篇之增刪改查操作詳解

    MySQL筑基篇之增刪改查操作詳解

    這篇文章主要和大家講解一下MySQL數(shù)據(jù)庫的增刪改查操作,這里的查詢確切的說應(yīng)該是初級的查詢,不涉及函數(shù)、分組等模塊,需要的可以參考一下
    2022-07-07
  • mysql出現(xiàn)“Incorrect key file for table”處理方法

    mysql出現(xiàn)“Incorrect key file for table”處理方法

    今天在恢復(fù)一個客戶數(shù)據(jù)的時候。發(fā)現(xiàn)了一貫問題。有多個表損壞了。因為都是直接把表復(fù)制進去的。然后就出現(xiàn)了這個問題問題
    2013-07-07
  • Mysql如何在select查詢時追加(添加)一個字段并指定值

    Mysql如何在select查詢時追加(添加)一個字段并指定值

    這篇文章主要介紹了Mysql如何在select查詢時追加(添加)一個字段并指定值,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 詳解MySQL中DROP,TRUNCATE 和DELETE的區(qū)別實現(xiàn)mysql從零開始

    詳解MySQL中DROP,TRUNCATE 和DELETE的區(qū)別實現(xiàn)mysql從零開始

    注意:這里說的delete是指不帶where子句的delete語句 相同點: truncate和不帶where子句的delete, 以及drop都會刪除表內(nèi)的數(shù)據(jù)
    2008-04-04
  • 一文搞懂MySQL預(yù)編譯

    一文搞懂MySQL預(yù)編譯

    這篇文章主要介紹了MySQL預(yù)編譯的相關(guān)資料,文中講解非常詳細,示例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07
  • MYSQL大表加索引的實現(xiàn)

    MYSQL大表加索引的實現(xiàn)

    本文主要介紹了MYSQL大表加索引的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評論