06-mysql中的查詢(排序、聚合函數、分組、分頁)(第二章)

排序

  • 語法

    select * from 表名 order by1 asc|desc,列2 asc|desc,...
  • 將行數據按照列1進行排序,如果某些行列1的值相同時,則按照列2排序,以此類推

  • 默認按照列值從小到大排列

  • asc從小到大排列,即升序

  • desc從大到小排序,即降序

  • 例子:查詢男生的信息,按年齡從大到小排序

    select * from students where gender=1 order by age desc;

聚合函數

  • 爲了快速得到統計數據,經常會用到如下5個聚合函數

  • 注意:聚合函數不能在 where 中使用

    • count(*)表示計算總行數,括號中寫星與列名,結果是相同的

    • 查詢學生的總數:

    select count(*) from students
    • max(列)表示求此列的最大值

    • 查詢男生最大的年齡

    select max(age) from students where gender=1;

    • min(列)表示求此列的最小值

    • 查詢男生中年齡最小的

    select min(age) from students where gender=1;

    • sum(列)表示求此列的和

    • 查詢所有男生年齡的綜合

    select sum(age) from students where gender=1;

    • avg(列)表示求此列的平均值

    • 查詢所有學生的平均年齡

    select avg(age) from students;

分組

  • 按照字段分組,表示此字段相同的數據會被放到一個組中

  • 分組後,分組的依據列會顯示在結果集中,其他列不會顯示在結果集中

  • 可以對分組後的數據進行統計,做聚合運算

  • 語法:

    select1,列2,聚合... from 表名 group by1,列2...
  • 查詢各個性別的人數

    select gender as 性別,count(*) from students group by gender;

  • 分組後的數據篩選:

    • 語法:
    select1,列2,聚合... from 表名 group by1,列2,列3... having1,...聚合...
    • 查詢男生的總人數
    select gender as 性別,count(*) from students group by gender having gender=1;
    

  • where是對from後面指定的表進行數據篩選,屬於對原始數據的篩選

  • having是對group by的結果進行篩選

分頁

  • 在實際開發當中,往往數據都是很多的,要是在一頁中顯示數據是一件非常麻煩的事情,我們可以獲取數據的部分行。

  • 語法:

    select * from 表名 limit start,count;
  • start: 從start開始,獲取count條數據

  • start的索引是從0開始的。

  • 例子:獲取前四個男生的信息

    select * from students where gender=1 limit 0,3;

  • 實際開發中我們會經常要對數據進行分頁展示

    • 已知:每頁顯示m條數據,當前顯示第n頁

    • 分頁公式:

    limit (n-1)  * n,m
發佈了58 篇原創文章 · 獲贊 17 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章