知識點一 |
查詢關鍵字:select 查詢語法結構:select 列名from表名where條件 group by(分組) order by(排序) |
||||||||||
聚合函數 |
Count(*) 統計記錄條數 sum(studentresult)統計某一列累加總和,要求列中的數據是數值類型 Max()求最大值,min()求最小值 avg() 求平均值 聚合函數的特點,針對數據進行統計,返回一個結果值。
|
||||||||||
排序 |
排序方式有升序(asc)和降序(desc),默認情況下是升序。 /*查詢所有學員信息按年級升序,再按生日降序*/ select * from student order by gid,birthday desc; 多條件排序原理是在按第一個條件排序後的基礎上,再按第二個條件來排序。 |
||||||||||
分組 |
分組就是結合聚合函數來對數據進行分組統計. 關鍵字:group by 根據分組的列把數據進行分組,然後再分別進行統計。 /*統計男女學員各有多少*/ select sex,count(*) from student group by sex /*統計每個年級各有多少學員*/ SELECT gid,count(*) from student group by gid; /*統計每門科目的考試平均分*/ select subjectno,avg(studentresult) from result group by subjectno;
Having:在分組之後的結果中再一次進行數據的篩選。此關鍵字必須要結合分組來使用。 /*查詢哪些學員在科目一參加了補考*/ select studentno, count(*) from result where subjectno = 1 group by studentno having count(*)>1
|
||||||||||
模糊查詢 |
模糊查詢就是指查詢條件不確定的情況。 /*模糊查詢 %: 0-N任意字符 _: 一個任意字符 []:區間指定內的一個字符 */ /*查詢姓張的學員 like */ select * from student where name like '張_'
/*查詢考試成績在 70 - 90 之間的數據 between */ select * from result where studentResult>=70 and studentResult<=90; select * from result where studentResult between 70 and 90; /*查詢沒有郵箱的學員信息 is null 查詢列值爲 null 的數據*/ select * from student where email is null;
/*查詢廣州和深圳的學員信息 in */ select * from student where address in ('廣州','深圳') |
||||||||||
分頁 |
只按要求顯示部分行數據. /*實現分頁需要的數據有哪一些: 總記錄數、每頁大小、總頁數 */ /*分頁 第一個數表示: 跳過多少條,第二個數表示:提取多少條*/ select * from student limit 0,3 |
||||||||||
連接查詢 |
連接查詢:內連接,外連接(左連接,右連接),交叉連接 /*兩種方式都是內連接:特點,兩個表的前後順序調換結果沒有影響 建議用inner join ... on ...方式,性能好一些 */ select s.studentno,name,examDate,studentResult from student s inner join result r on s.studentNo = r.studentNo;
select s.studentno,name,examDate,studentResult from result r,student s where s.studentNo = r.studentNo
外連接:左外連接 左外連接:左邊的表是主表,右邊的表是子表,主表的數據全部顯示,子表的數據來填充,如果子表中沒有相關的數據填充,則顯示NULL。 select * from student s left join result r on s.studentNo = r.studentNo
/*查詢沒有參加考試的學員信息*/ select * from student s left join result r on s.studentNo = r.studentNo where r.studentNo is null |
||||||||||
子查詢 |
/*只有一個條件:'一年級' 要求查詢所有一年級的學員信息 分析:取一年級的編號,再把編號作爲查詢條件在學員表中進行查詢 子查詢,括號裏面的查詢會先執行,取得一個結果作爲外面查詢的條件。 子查詢語句可以出現在查詢語句的任意地方。*/ select * from student where gid = (select id from grade where gradename = '一年級');
select * from student s join grade g on g.id= s.gid where g.gradeName = '一年級' 注意:表連接能實現的功能,子查詢都能實現,但子查詢實現的功能,表連接不一定能實現。 當查詢結果只是作爲查詢條件時,選擇用子查詢, 當查詢結果數據來自於多張表,選擇用表連接。 子查詢使用 =、>=、< 、<= 、!= 要保證子查詢的返回結果只有一個值, 如果有多個值返回,則用只能用 in
/*查詢參加考試的學員信息 */ select * from student where studentno not in (select studentno from result where subjectno = 1) |
||||||||||
函數 |
字符串函數、數學函數、日期函數、聚合函數、系統函數
日期函數
|
||||||||||
總結 |
|
||||||||||
作業 |
/*把密碼把所有的 o 變成 0 把所有的 l 變成 1 一句SQL實現*/ update card set password = replace( replace(password,'o','0') ,'l','1')
1. 查詢20歲以下的學員信息 2. 查詢Java課程的考試成績 3. 查詢女學員信息,包括(學號、姓名、年齡、性別) 4. 查詢課時超過60的科目信息
5. 查詢班級中姓張的單名的學員信息 6. 查詢考試成績在70-80之間的數據 7. 查詢廣州、北京的學員信息 8. 查詢沒有郵箱地址的學員信息 is null =’’。
9. 查詢Java考試後前3名的考試成績。 10. 分頁查詢第3頁的 學員信息 每頁3條。 11. /*查詢本月生日的學員信息*/。 12. 查詢本週的開卡信息。 13. 統計班級學員的平均年齡。 統計所有科目的總課時數。 |