- GROUP BY子句
GROUP BY子句主要用于根據(jù)字段對(duì)行分組挎塌。通常和聚合函數(shù)一起使用
舉例一:將xscj數(shù)據(jù)庫中各專業(yè)名輸出磕昼。
select 專業(yè)名
from xs
group by 專業(yè)名;
舉例二:求xscj數(shù)據(jù)庫中各專業(yè)的學(xué)生數(shù)肿男。
select 專業(yè)名,count(*) as '學(xué)生數(shù)'
from xs
group by 專業(yè)名;
舉例三:求被選修的各門課程的平均成績和選修該課程的人數(shù)。
select 課程號(hào), avg(成績) as '平均成績' ,count(學(xué)號(hào)) as'選修人數(shù)'
from xs_kc
group by 課程號(hào);
舉例四:在xscj數(shù)據(jù)庫上產(chǎn)生一個(gè)結(jié)果集巡雨,包括每個(gè)專業(yè)的男生人數(shù)、女生人數(shù)席函、總?cè)藬?shù)铐望,以及學(xué)生總?cè)藬?shù)。
注意:使用帶rollup操作符的group by子句茂附,指定在結(jié)果集內(nèi)不僅包含由group by提供的正常行正蛙,還包含匯總行。
select 專業(yè)名, 性別, count(*) as '人數(shù)'
from xs
group by 專業(yè)名,性別
with rollup;
舉例五:在xscj數(shù)據(jù)庫上產(chǎn)生一個(gè)結(jié)果集营曼,包括每門課程各專業(yè)的平均成績乒验、每門課程的總平均成績和所有課程的總平均成績。
select 課程名, 專業(yè)名, avg(成績) as '平均成績'
from xs_kc, kc,xs
where xs_kc.課程號(hào) = kc.課程號(hào) and xs_kc.學(xué)號(hào) = xs.學(xué)號(hào)
group by 課程名, 專業(yè)名
with rollup;
- HAVING 子句
使用having子句的目的與where子句類似蒂阱,不同的是where子句是用來在from子句后面之后選擇行锻全,而having子句是用來在group by子句后選擇行!
舉例:查找通信工程專業(yè)平均成績?cè)?5分以上的學(xué)生的學(xué)號(hào)和平均成績蒜危。
子查詢=>where結(jié)果集=>分組
select 學(xué)號(hào),avg(成績) as '平均成績'
from xs_kc
where 學(xué)號(hào) in
( select 學(xué)號(hào)
from xs
where 專業(yè)名 = '通信工程' )
group by 學(xué)號(hào)
having avg(成績) >=85;
- ORDER BY子句
排序 關(guān)鍵字ASC表示升序排列虱痕,DESC表示降序排列,系統(tǒng)默認(rèn)值為ASC辐赞。
舉例一:將計(jì)算機(jī)專業(yè)學(xué)生的“計(jì)算機(jī)基礎(chǔ)”課程成績按降序排列部翘。
select 姓名,課程名,成績
from xs,kc,xs_kc
where xs.學(xué)號(hào)= xs_kc.學(xué)號(hào)
and xs_kc.課程號(hào)= kc.課程號(hào)
and 課程名= '計(jì)算機(jī)基礎(chǔ)'
and 專業(yè)名= '計(jì)算機(jī)'
order by 成績 desc;
舉例二:將計(jì)算機(jī)專業(yè)學(xué)生按其平均成績排列。
select 學(xué)號(hào), 姓名, 專業(yè)名
from xs
where 專業(yè)名= '計(jì)算機(jī)'
order by ( select avg(成績)
from xs_kc
group by xs_kc.學(xué)號(hào)
having xs.學(xué)號(hào)=xs_kc.學(xué)號(hào)
);
- LIMIT子句
LIMIT子句响委,主要用于限制被SELECT語句返回的行數(shù)新思。
舉例:查找xs表中從第4位同學(xué)開始的5位學(xué)生的信息。
select 學(xué)號(hào), 姓名, 專業(yè)名, 性別, 出生日期, 總學(xué)分
from xs
order by 學(xué)號(hào)
limit 3, 5;
- UNION子句
使用UNION語句赘风,可以把來自許多SELECT語句的結(jié)果組合到一個(gè)結(jié)果集合中夹囚。
舉例:查找學(xué)號(hào)為081101和學(xué)號(hào)為081210的兩位同學(xué)的信息。
select 學(xué)號(hào), 姓名, 專業(yè)名, 性別, 出生日期, 總學(xué)分
from xs
where 學(xué)號(hào)= '081101'
union
select 學(xué)號(hào), 姓名, 專業(yè)名, 性別, 出生日期, 總學(xué)分
from xs
where 學(xué)號(hào)= '081210';