排序
語法
select * from 表名 order by 列1 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;
分組
按照字段分組,表示此字段相同的數據會被放到一個組中
分組後,分組的依據列會顯示在結果集中,其他列不會顯示在結果集中
可以對分組後的數據進行統計,做聚合運算
語法:
select 列1,列2,聚合... from 表名 group by 列1,列2...
查詢各個性別的人數
select gender as 性別,count(*) from students group by gender;
分組後的數據篩選:
- 語法:
select 列1,列2,聚合... from 表名 group by 列1,列2,列3... having 列1,...聚合...
- 查詢男生的總人數
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