MySql 篩選條件、聚合分組、連接查詢


篩選條件

比較運算符

  • 等於: = ( 注意!不是 == )
  • 不等於: != 或 <>
  • 大於: >
  • 大於等於: >=
  • 小於: <
  • 小於等於: <=
  • IS NULL
  • IS NOT NULL

邏輯運算符

  • 與:and
  • 或:or
  • 非:not

其它操作

  • 排序:order by
    • 正序:asc
    • 倒序:desc
    • 例:select * from students order by age desc ;
  • 限制:limit
    • 控制顯示m條數據:limit m
    • 從下標為m的行數開始顯示n條數據:limit m,n
    • 例:select * from students limit 3,2 ;
  • 去重:distinct
    • 例:select distinct * from students;
  • 模糊查詢:like
    • 任意一個字符:_
    • 任意多個字符:%
    • 例:select * from students where name like '%abc_' ;
  • 范圍查詢
    • 連續范圍: BETWEEN a AND b 相當於a <= value <= b
    • 間隔返回: IN
    • 例:select * from students where id in(1,3,5,7);
  • 判斷空值:is null 或者 is not null
  • 別名:as

聚合分組

常用聚合函數

  • 統計個數:COUNT(column)
  • 最大值:MAX(column)
  • 最小值:MIN(column)
  • 求和:SUM(column)
  • 平均值:AVG(column)
  • 列出字段全部值:GROUP_CONCAT(column)

分組查詢:group by

  • 在分組的情況下,只能夠出現分組字段和聚合字段
  • 其他的字段沒有意義,會報錯!
  • Select 字段 from 表 group by 字段;
  • Select 字段,count(*) from 表 group by 字段;

聚合篩選:having

  • 加having條件表達式,可以對輸出的結果做出限制
  • Select 字段1 from 表名 group by 字段1,字段2 having 字段2>=80;

執行順序

  • 如果一個查詢語句中同時包含了別名(as),聚合函數, where, having,那么他們的執行順序是
    • 先是執行:where
    • 然后執行:聚合函數和別名
    • 最后執行:having

子查詢

將一個查詢的結果留下來用於下一次查詢 ( select 中嵌套 select )

要求:

    1. 嵌套在查詢內部
    1. 必須始終出現在圓括號內

例:

  • 求出學生的平均年齡
    • select avg(age) from students;
  • 查找出大於平均年齡的數據
    • select * from student where age > 19;
  • 將求出的平均年齡的SQL語句用於查找大於平均年齡的語句中
    • select * from students where age > (select avg(age) from students);

連接查詢

內連接:inner join

  • 無條件內連接:
    • 無條件內連接,又名交叉連接/笛卡爾連接
    • 第一張表中的每一項會和另一張表的每一項依次組合
    • select * from 表1 inner join 表2
  • 有條件內連接:
    • 在無條件內鏈接的基礎上,加上一個on子句
    • 當連接的時候,篩選出那些有實際意義的記錄來進行組合
    • select * from 表1 as a inner join 表2 as b on a.id = b.id

外連接:{left | right} join

  • 左外連接: (以左表為基准)
    • 兩張表做連接的時候,在連接條件不匹配的時候
    • 留下左表中的數據,而右表中的數據以NULL填充
    • select * from 表1 as a left join 表2 as b on a.id = b.id
  • 右外連接: (以右表為基准)
    • 對兩張表做連接的時候,在連接條件不匹配的時候
    • 留下右表中的數據,而左表中的數據以NULL填充
    • select * from 表1 as a right join 表2 as b on a.id = b.id





免責聲明!

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



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