1. 程式人生 > >SQL限制性語句和聚集函式

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');