前言
前兩篇主要講解了一些理論掀鹅,今天我們舉一些簡單的例子散休。全部上實例。
任務
學會舉一反三乐尊。
Data Query Language 數(shù)據(jù)查詢語言
情況一:先上表格戚丸,這是學生成績表格。表的名稱是STUDENT。
ID | SHUXUE | YUWEN | YINGYU | WULI | HUAXUE
----------| ---------- ---------- ---------- ---------- ----------
2006001 | 108 | 119 | 98 | 127 | 136
2006002 | 149 | 105 | 110 | 142 | 129
2006003 | 139 | 125 | 110 | 120 | 104
2006004 | 90 | 135 | 130 | 145 | 114
注意:數(shù)據(jù)庫的查詢語句是不區(qū)分大小寫的限府。
查詢所有學生的信息:
select * from STUDENT
查詢學生的學號和對應的英語成績:
select ID,YINGYU from student
過濾表中的重復數(shù)據(jù):
select distinct YINGYU from student
在所有學生數(shù)學分數(shù)上加10分特長分
select shuxue+10 from student;
統(tǒng)計每個學生的總分:
select shuxue+yuwen+yingyu+wuli+huaxue from student;
或者
SELECT (SHUXUE +YUWEN+YINGYU+WULI+HUAXUE)as total from student;
使用別名表示學生分數(shù):
select id, shuxue+yuwen+yingyu+wuli+huaxue 別名 from student;
下面是對比
select id, shuxue+yuwen+yingyu+wuli+huaxue zongfen from student;
ID | zongfen
-----|----- ----------
2006001 | 588
2006002 | 635
2006003 | 598
2006004 | 614
select id, shuxue+yuwen+yingyu+wuli+huaxue from student;
ID | shuxue+yuwen+yingyu+wuli+huaxue
---------|- -------------------------------
2006001 | 588
2006002 | 635
2006003 | 598
2006004 | 614
查詢總分大于600分的所有同學 :
select * from student where(yuwen+shuxue+yingyu+wuli+huaxue)>600;
查詢數(shù)學成績在100-120之間的同學 :
select * from student where shuxue between 100 and 120;
對總分進行排序后輸出夺颤,然后按照從高到底的順序輸出 :
SELECT (SHUXUE +YUWEN+YINGYU+WULI+HUAXUE ) from student order BY SHUXUE +YUWEN+YINGYU+WULI+HUAXUE DESC;
或者是:
SELECT (SHUXUE +YUWEN+YINGYU+WULI+HUAXUE ) AS TOTAL from student order BY TOTAL DESC;
情況二:表格如下所示:表格的名稱是information
select * from information;
ID | PROJECT | FRACTION
-----|----- ---------- ----------
2001 | yingyu | 80
2001 | shuxue | 130
2001 | wuli | 130
2001 | yuwen | 110
2001 | huaxue | 123
2002 | yingyu | 123
2002 | yuwen | 110
2002 | huaxue | 123
2002 | shuxue | 123
2002 | wuli | 123
下面的操作主要使用 group by
;
給出說有學生的總分:
select id,SUM(FRACTION)from information group by ID;
計算平均科目的平均分:
select id,sum(FRACTION)/count(*) from information group by ID ;
查詢總分大于600的學生ID:
select id from information group by ID having SUM(FRACTION)>600;
查詢平均成績大于110的學生ID:
select id from information group by ID having SUM(FRACTION)/count(*) >115;
或
select * from information group by ID having avg(FRACTION)>115;
給出成績全部在90分及以上的學生信息(包含ID、課程胁勺、分數(shù)):
思路:上面可以查詢平均成績大于110的學生的ID世澜,那么我們根據(jù)上面的條件可以得到某個ID的所有成績的最小值是否大于90,這樣就可以得到所有滿足條件的ID署穗,然后根據(jù)ID作為條件寥裂,就能得出上面的值。
select * from information where ID in (select ID from information group by ID having min(FRACTION)>=90);
思路2:得到成績小于90的學生的ID案疲,得到了學生的ID封恰,我們就利用not in 語法。得到滿足條件的ID褐啡,根據(jù)ID作為條件得到上面的值诺舔。
select * from information where ID not in(select distinct ID from information where FRACTION < 90);
查詢出該班級里不同科目人數(shù)的總數(shù):
select PROJECT ,count(id) from information group by PROJECT;
查詢出ID是“20”開頭學生中平均成績大于115分的學生信息
select * from information where ID IN (select ID from information where ID like '20%' group by ID having avg(FRACTION)>115);