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

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

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

前言

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

一. 分組查詢

1.1 語法

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

1.2 where與having區(qū)別

  • 執(zhí)行時機不同:where是分組之前進行過濾,不滿足where條件,不參與分組;而having是分組之后對結果進行過濾。
  • 判斷條件不同: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 ;
  • 如果是多字段排序,當?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è)務系統(tǒng)開發(fā)時,也是非常常見的一個功能,我們在網站中看到的各種各樣的分頁條,后臺都需要借助于數(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語句的具體語法之前,我們已經講解了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語句后,我們看到依然可以正常的查詢到結果,此時就說明: 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報錯了:

由此我們可以得出結論: 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;

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

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

全篇總結

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

相關文章

最新評論