SQL筆記(8) 查詢資料(2)

2021-10-25 09:36:01 字數 2466 閱讀 4214

如果我們只希望返回某些列的資料,而不是所有列的資料,我們可以用select 列1, 列2, 列3 from …,讓結果集僅包含指定列。這種操作稱為投影查詢。

(1)例如,從students表中返回id、score和name這三列:

select id, score, name from students;
(2)使用select 列1, 列2, 列3 from …時,還可以給每一列起個別名,這樣,結果集的列名就可以與原表的列名不同。它的語法是select 列1 別名1, 列2 別名2, 列3 別名3 from …。

例如,以下select語句將列名score重新命名為points,而id和name列名保持不變:

select id, score points, name from students;
(3)投影查詢同樣可以接where條件,實現複雜的查詢:

select id, score points, name from students where gender =

'm';

(1)根據其他條件排序,可以加上 order by 子句:

select id, name, gender, score from students order

by score;

(2)如果要反過來,按照成績從高到底排序,我們可以加上desc表示「倒序」:

select id, name, gender, score from students order

by score desc

;

(3)如果score列有相同的資料,要進一步排序,可以繼續新增列名。例如,使用order by score desc, gender表示先按score列倒序,如果有相同分數的,再按gender列排序:

select id, name, gender, score from students order

by score desc

, gender;

(4)預設的排序規則是asc:「公升序」,即從小到大。asc可以省略,即order by score asc和order by score效果一樣。

如果有where子句,那麼order by子句要放到where子句後面。例如,查詢一班的學生成績,並按照倒序排序:

select id, name, gender, score

from students

where class_id =

1order

by score desc

;

(1)分頁實際上就是從結果集中「擷取」出第m~n條記錄。這個查詢可以通過limit offset 子句實現。

select id, name, gender, score

from students

order

by score desc

limit

3offset

0;

上述查詢limit 3 offset 0表示,對結果集從0號記錄開始,最多取3條。注意sql記錄集的索引從0開始。

(2)如果要查詢第2頁,那麼我們只需要「跳過」頭3條記錄,也就是對結果集從3號記錄開始查詢,把offset設定為3:

select id, name, gender, score

from students

order

by score desc

limit

3offset

3;

(3)查詢第3頁的時候,offset應該設定為6:

select id, name, gender, score

from students

order

by score desc

limit

3offset

6;

(4)如果原本記錄集一共就10條記錄,但我們把offset設定為20,會得到什麼結果呢?

select id, name, gender, score

from students

order

by score desc

limit

3offset

20;

empty result set
offset超過了查詢的最大數量並不會報錯,而是得到乙個空的結果集。

(5)offset是可選的,如果只寫limit 15,那麼相當於limit 15 offset 0。

在mysql中,limit 15 offset 30還可以簡寫成limit 30, 15。

使用limit offset 分頁時,隨著n越來越大,查詢效率也會越來越低。

SQL資料查詢2

use hcreate table zy1 empno int,ename varchar 10 job varchar 10 mgr int,hiredate date,sal double coom double deptno int drop table zy1 desc zy1 select...

SQL筆記03 查詢資料

第二種 第三種 not優先順序最高,其次是and和or 可以改變優先順序 in select from students where score in 90,91 the in operator is a shorthand for multiple or conditions.between th...

SQL摘錄筆記(2) 檢索資料

檢索從a表中檢索出乙個名為a的列 輸出資料的順序可能是資料被新增到表中的順序,不必糾結 select a from p 注意 多條sql語句必須以 分隔,多數dbms不需要再單條sql語句後加分號,不排除個例。加上分號也沒關係。sql語句不區分大小寫。一般對sql的關鍵字使用大寫,對列名和表名使用小...