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;