SQL 查詢語(yǔ)句復(fù)習(xí)筆記

設(shè) students 表有 id, class_id, name, gender, score列,設(shè) class表有 id, name

排序

先按score列倒序,如果有相同分?jǐn)?shù)的,再按gender列排序

SELECT id, name, gender, score FROM students ORDER BY score DESC, gender;

分頁(yè)

把結(jié)果集分頁(yè),每頁(yè)10條記錄,展示第1頁(yè)

SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 10;

如果需要顯示第3頁(yè),offset計(jì)算公式為每頁(yè)記錄數(shù)x(頁(yè)數(shù)-1),即10x(3-1)=20,語(yǔ)句為LIMIT 10 OFFSET 20offset超過(guò)了查詢的最大數(shù)量并不會(huì)報(bào)錯(cuò),而是得到一個(gè)空的結(jié)果集。)

SELECT id, name, gender, score
FROM students
ORDER BY score DESC
LIMIT 10 OFFSET 20;

聚合查詢

查詢所有男生的行數(shù),設(shè)置結(jié)果集的列名為boys,語(yǔ)句為COUNT(*) boys

SELECT COUNT(*) boys FROM students WHERE gender = 'M';

每頁(yè)10條記錄,通過(guò)聚合查詢獲得總頁(yè)數(shù)(CEILING為向上取整,FLOOR為向下取整)

SELECT CEILING(COUNT(*) / 3) FROM students;

其他常用聚合函數(shù) SUM,AVG,MAXMIN

分組聚合查詢

統(tǒng)計(jì)各班的男生和女生人數(shù)

SELECT class_id, gender, COUNT(*) num FROM students GROUP BY class_id, gender;

結(jié)果為

class_id gender num
1 M 15
1 F 15
2 M 15
2 F 15

查出每個(gè)班級(jí)的平均分,保留一位小數(shù)點(diǎn)

SELECT class_id,ROUND(AVG(score),1) avg_score from students GROUP by class_id;

結(jié)果為

class_id avg_score
1 86.5
2 66.6
3 23.3

多表查詢

使用多表查詢一班女生的信息

SELECT
    s.id sid,
    s.name,
    s.gender,
    s.score,
    c.id cid,
    c.name cname
FROM students s, classes c
WHERE s.gender = 'M' AND c.id = 1;

由于兩個(gè)表中都有 id 和 name 列,務(wù)必要給相應(yīng)的列設(shè)置別名,也可以給表設(shè)置別名使語(yǔ)句更加簡(jiǎn)潔。
多表查詢的結(jié)果集可能非常巨大,要小心使用。

連接查詢

選出students表的所有學(xué)生信息,并連接class表的班級(jí)名稱

SELECT s.id, s.name, s.class_id, c.name class_name, s.gender, s.score
FROM students s
INNER JOIN classes c
ON s.class_id = c.id;

JOIN查詢對(duì)比

設(shè)A表和B表,設(shè)查詢語(yǔ)句:

SELECT * FROM A JOIN B ON A.c1 = B.c2;

INNER JOIN是選出兩張表都存在的記錄:



LEFT OUTER JOIN是選出左表存在的記錄:


RIGHT OUTER JOIN是選出右表存在的記錄:


FULL OUTER JOIN則是選出左右表都存在的記錄:


未完待續(xù)

參考內(nèi)容:SQL教程 - 廖雪峰的官方網(wǎng)站

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • sql教程 1基本查詢 基本查詢 SELECT * FROM <表名>以查詢到一張表的所有記錄 2條件查詢 條件查...
    無(wú)疆wj閱讀 429評(píng)論 0 0
  • 練習(xí)鏈接 1 查詢所有數(shù)據(jù) 查詢students表的所有數(shù)據(jù) SELECT * FROM students; SE...
    w_dll閱讀 1,928評(píng)論 0 0
  • MySQL技術(shù)內(nèi)幕:SQL編程 姜承堯 第1章 SQL編程 >> B是由MySQL創(chuàng)始人之一Monty分支的一個(gè)版...
    沉默劍士閱讀 2,627評(píng)論 0 3
  • 一、字符串 1、不可變字符串的創(chuàng)建(NSSString) 2、字符串的比較 3、字符串的處理 4、可變字符串的創(chuàng)建...
    my_楊哥閱讀 5,357評(píng)論 1 15
  • 如果,痛苦能夠釋放,誰(shuí)愿意留在心上!如果,痛苦能夠分擔(dān),誰(shuí)愿意獨(dú)扛!其實(shí),每個(gè)人心中,都有一段故事,有些,能與別人...
    軒濡沫閱讀 243評(píng)論 0 0

友情鏈接更多精彩內(nèi)容