SQL查詢數據


  1. 基本查詢

    SELECT * FROM <表名>

    使用SELECT * FROM students時,SELECT是關鍵字,表示將要執行一個查詢,*表示“所有列”,FROM表示將要從哪個表查詢

  2. 條件查詢
    SELECT * FROM <表名> WHERE <條件表達式>

    條件表達式可以用<條件1> AND <條件2>表達滿足條件1並且滿足條件2;<條件1> OR <條件2>表示滿足條件1或者滿足條件2;NOT <條件>,表示“不符合該條件”的記錄。而NOT class_id = 2等價於class_id <> 2。

  3. 投影查詢
    SELECT 列1, 列2, 列3 FROM <表名> //返回某些列的數據 
    SELECT 列1 別名1, 列2 別名2, 列3 別名3 FROM <表名> //返回某些列的數據並修改列名
  4. 排序
    SELECT id, name, gender, score FROM students ORDER BY score DESC, gender;

    ORDER BY score表示按score排序,DESC表示倒序,gender表示如果score相同時按gender升序排序(默認ASC)。如果帶有WHERE,則ORDER BY需要放在WHERE后面。

  5. 分頁查詢
    -- 查詢第1頁
    SELECT id, name, gender, score
    FROM students
    ORDER BY score DESC
    LIMIT 3 OFFSET 0;
    LIMIT表示顯示數據行數,OFFSET表示開始顯示的索引,從0開始。
  6. 聚合查詢
    -- 使用聚合查詢並設置結果集的列名為num:
    SELECT COUNT(*) num FROM students;

    使用聚合查詢時還可以使用WHERE進行條件查詢。除了COUNT(),還有SUM() AVG() MAX() MIN()等聚合函數。CEILING()表示向上取整,FLOOR()向下取整。
    聚合查詢用於分組時:

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

    將會顯示3個結果,在SELECT后加入字段class_id,可以分組統計出class_id各個count值。
    此外,分組前還可以進行條件篩選:

    SELECT class_id, COUNT(*) num FROM students WHERE score > 90 GROUP BY class_id;

     分組后,還可以對分組進一步篩選:

    SELECT class_id, COUNT(*) num FROM students WHERE score > 90 GROUP BY class_id HAVING COUNT(*) > 2;

    WHERE和HAVING的區別:a.where在分組前限定,如果不符合要求,則不參與分組;having在分組之后限定,如果不符合要求,將不會被查詢出來。b.where后不可跟聚合函數,having后可以進行聚合函數的判斷。

  7. 連接查詢
    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;

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM