MySQL WHERE字句
在使用MySQL查詢select語句時,可以使使用WHERE字句來指定查詢條件,從FROM字句中間選取適當的數據行和列
- 可以使用一個或多個以逗號分隔的表,包括各種使用WHERE子句條件。但是WHERE子句的SELECT命令是一個可選部分。
- 您可以使用WHERE子句指定任何條件。
- 您可以指定一個以上的條件下使用AND或者OR運算符。
- 一個WHERE子句中可以使用的分散DELETE或UPDATE的SQL命令指定條件。
WHERE語法格式:
SELECT * FROM 表名 WHERE 查詢條件 <判斷運算,判斷運算1,...>
--示例:
已知數據庫中有以下數據:

查詢:查上表年齡在23歲的同學有哪些人!
語句:
SELECT * FROM BEIMU WHERE BEI_AGE='23'
執行結果
查詢比23歲大的同學有哪些
SELECT * FROM BEIMU WHERE BEI_AGE>23
查詢比23歲小的同學有哪些
SELECT * FROM BEIMU WHERE BEI_AGE<23
查詢年齡不是23歲的同學
SELECT * FROM BEIMU WHERE BEI_AGE<>23
SELECT * FROM BEIMU WHERE BEI_AGE!=23
判定條件其結果取值為TRUE,FALSE,UNKNOWN(未知)
一、判斷運算的語法分類如下:
- 算術運算符:+ - * /(處可以寫成div)%(取值可以寫成mod)
- 比較運算符:= > >= < <= !=(不等於可以寫成<>)
- 邏輯運算符:&&(邏輯與可以寫成 AND) || (邏輯或也可以寫成or) NOT(邏輯非)
- 范圍表達式:between...and...(同樣可表示 表達式 >= and 表達式 <=)或者 not between...and...(同樣可表示 表達式< || 表達式 >)
- 集 合:in(值,值1,值2...) not in值,值1,值2...) (可理解為:in 在...期間...中,not in 不在.....其中,期間,中)
- 模糊查詢:LIKE NOT LIKE,通配符使用:%表示0-那個字符,_下划線表示一個字符
- 位運算符:&(按位與) |(按位或)
- null空值判斷:is null 與is not null,如果使用null=null,null<>null,null=0,null<>0,null=false等都不對
注意:如果是初學者,從文章開始看的,可先暫時對一下內容做個理解,后面我會對GROUP BY、‘having、order by和limit進行詳細分析
二、group by 配合聚合函數一塊使用
COUNT:計數、數、數數;量的計數
MAX:最大值
MIN:最小值
AVG:平均值
SUM:總和、求和、總數
SELECT的查詢條件只能是GROUP BY 的字段或者聚合函數
三、having和where不同,where是從原數據中賽選,having是從查詢的結果中再次篩選
where子句中不能使用組合函數,having中可以使用
四、order by排序
默認是升序,也可以在字段后面加ASC(升序)或者DESC(降序),可使用多列排序
五、分頁limit 參數1 ,參數2
參數1:從第幾行開始查詢,行數從零開始
參數2:每頁顯示幾行
MySQL中三種方式使用where條件,由好到壞:
-
在索引中使用where條件過濾不匹配的記錄,這是在存儲引擎層完成的
-
在使用索引覆蓋來掃描(在Extra列中出現了Using index)來返還記錄,直接從索引中過濾不需要的記錄返回命中結果,這是在MySQL服務層完成的,但無需再返回查詢記錄
-
從數據層中返回數據,然后過濾不滿足條件記錄,這是在MySQL服務器完成的,MySQL需要從數據表中讀出記錄然后過濾