SQL限制性語句和聚集函式
一般格式
select [*|distinct] 目標列表達式 [,目標列表達式]… from 表名 [,表名] |
(select 語句)[as] 別名 [where 條件表示式]
[group by 列名1 [having 條件表示式]]
[order by 列名2 [asc|desc]];
1)消除值重複的行 (僅不顯示重複的行)
select distinct name from student;
limit
limit 0,1
以0號列開始顯示1列
=limit 1
limit 1,1
以1號列開始顯示1列,即顯示第2列
offset設定開始位
limit 1 offset 2 ; = limit 2,1;
以2號列開始顯示1列,即顯示第3例
ORDER BY子句
使用者可以用ORDER BY字句對結果集按照一個或多個數據列的 升序(ASC)或降序(DESC)排列,預設升序
select * from student order by name desc;
where常用的比較運算子
select * from student where 2018-30 <birth<2018-20
查詢姓名為aa的學生資訊
select * from stu where name= ‘aa’;
查詢所有女生(非男生)的學員資訊
select * from stu where sex <> ’boy’;
Between and
使用between運算來顯示一個區間內的值,
查詢在1995-07-13到1995-07-15之間的學生資訊。
select * from student where birthday between ‘1995-07-13’and ‘1995-07-15’;
IN
查詢班級編號是1或者是2的學員資訊
select * from student where cid in(1,2);
查詢班級編號不是1或不是2的學員資訊
select * from student where cid NOT in(1,2);
like 使用like運算選擇類似的的值
選擇條件可以包含字元或數字:
%代表零個或多個字元(任意個字元)
_代表一個字元
select * from student where name LIKE ‘張%’;
GROUP BY +分組依據 (+限制語句having count(*)>2);
將結果集按照某一列或多列的值進行分組,值相等的為一組。
分組後,聚集函式count(*)將作用於每一個組。
having count(*)…篩選count(*)值;
聚集函式
查詢每門課程的平均成績,結果按平均成績升序排列,平均成績相同時,按課程號降序排列
order by avg(score)asc,cno desc;(前面排序條件無法完成,則用後面)
聚合函式可以和where cno連用
select avg(score) from sc where cno in (select cno from course where cname='J2SE');