MYSQL3-模糊查詢/排序/統計/重命名/最大最小/求和

在這裏插入圖片描述

1.模糊查詢

查詢學生表中姓溫的:

select * from t_student where sname like'溫%';

在這裏插入圖片描述
查詢學生表中名字帶小的:

select * from t_student where sname like'%小%';

在這裏插入圖片描述但是模糊查詢只支持字符串的查詢,不支持數字之類的。

2.排序

ORDER BY 語句用於對結果集進行排序。
ORDER BY 語句

  • ORDER BY 語句用於根據指定的列對結果集進行排序。
  • ORDER BY 語句默認按照升序對記錄進行排序。
  • 如果希望按照降序對記錄進行排序,可以使用 DESC 關鍵字。

實例 1 以字母順序顯示公司名稱:

SELECT Company, OrderNumber FROM Orders ORDER BY Company

實例 2 以字母順序顯示公司名稱(Company),並以數字順序顯示順序號(OrderNumber):

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

實例 3 以逆字母順序顯示公司名稱:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

實例 4 以逆字母順序顯示公司名稱,並以數字順序顯示順序號:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

在這裏插入圖片描述

3.計數

select count(*) from t_student;

可以改變輸出的列名:

select count(*) as '統計' from t_student;

在這裏插入圖片描述

4.重命名

select id as'編號',sname as '姓名',age as '年齡',xueli as '學歷' from t_student;

可以將本來是這樣的:
在這裏插入圖片描述改成這樣:
在這裏插入圖片描述但是數據庫裏的列名仍然是不會變的,只是顯示按照我們重命名的樣子來的

重命名還可以用到簡化語句上
下面這樣就很複雜,要寫很長一串SQL語句

select t_student.id,t_student.sname from t_student join t_grade on t_student.id = t_grade.sid;

在這裏插入圖片描述可以用重命名達到一樣的效果。

select s.id,s.sname,s.age,g.chinese from t_student s join t_grade g on s.id = g.sid;

在這裏插入圖片描述

5.求最大值最小值,求和

在這裏插入圖片描述

6.分組

group by
分組的話意味着要做計算,不能說分了組但是什麼也沒幹,這樣會報錯。

select s.id,s.sname,classname from t_student s join t_class c on c.id=s.id group by classname;

在這裏插入圖片描述
因爲,名字,id沒有合併,所以要加上統計人數:

select count(s.sname),classname from t_student s join t_class c on c.id=s.cid group by classname;

在這裏插入圖片描述

練習題

三張表一起關聯起來,求出每個班的平均分

select s.id '編號',s.sname '姓名',c.classname,s.age,g.chinese,g.math from t_student s join t_grade g on s.id = g.sid join t_class c on c.id = s.cid;

在這裏插入圖片描述改一下,求出科目總分

select s.id '編號',s.sname '姓名',c.classname,s.age,(g.chinese+g.math)'總分' from t_student s join t_grade g on s.id = g.sid join t_class c on c.id = s.cid;

在這裏插入圖片描述把每個班的總分算出來:

select c.id '編號',c.classname,sum(g.chinese+g.math)'總分' from t_student s join t_grade g on s.id = g.sid join t_class c on c.id = s.cid group by c.id;

在這裏插入圖片描述
把每個班的總人數算出來:

select c.id '編號',c.classname,count(*)'人數',sum(g.chinese+g.math)'總分' from t_student s join t_grade g on s.id = g.sid join t_class c on c.id = s.cid group by c.id;

在這裏插入圖片描述總分除以人數就是每個班的均分:

select c.id '編號',c.classname,count(*)'人數',sum(g.chinese+g.math)'總分',sum(g.chinese+g.math)/count(*) '平均分' from t_student s join t_grade g on s.id = g.sid join t_class c on c.id = s.cid group by c.id;

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章