示例使用的資料表在上乙個部落格中建立的
示例如下:查詢**等於10.5的行
select * from commodity where price=10.5
輸出:1 1001 牙刷 10.5
上個示例中,我們使用到了『=』這個操作符,下面列出所有條件操作符
where操作符 =
等於<>
不等於!=
不等於<
小於》大於<=
小於等於
>=
大於等於
between
在指定的兩個值之間
在mysql中,檢查欄位是不區分大小寫的
比如:where name=『ys』的結果和where name='ys'是一樣的。我的資料當中沒有字母,所以不做演示了。
如下,查詢typeid不等於1001的所有行
select * from commodity where typeid<>1001
其輸出結果和!=是一樣的:
select * from commodity where typeid!=1001
都是輸出:
3 1002 茶几 999.9
4 1003 電視 3199
5 1003 冰箱 2999
6 1004 1 手機 1999
7 1004 2 手機 7699
8 1004 .3 手機 699.9
9 1005 t恤 21.5
10 1005 牛仔褲 99
如下,查詢typeid在1002和1004之間的所有行,包括1002和1004
select * from commodity where typeid between 1002 and 1004
輸出:3 1002 茶几 999.9
4 1003 電視 3199
5 1003 冰箱 2999
6 1004 1 手機 1999
7 1004 2 手機 7699
8 1004 .3 手機 699.9
必須指定兩個值,乙個低端值和乙個高階值,中間必須用and連線。
如下,檢查name為null的行,注意需要用is null。不是用=
select * from commodity where name is null
會輸出所有name欄位為null的行
上面的所有示例都是單個查詢條件,但是實際中肯定會出現不止乙個查詢條件,這時候就可以用and或or來組合where子句
示例1,查詢**大於20的1001型商品
select * from commodity where price>20 and typeid=1001
輸出:2 1001 毛巾 21.5
示例2,查詢**大於3000的1003型商品或1004型商品
select * from commodity where typeid=1003 or typeid=1004 and price>3000
大家仔細看看上面的**,似乎沒什麼問題,型別等於1003或型別等於1004並且**大於3000
輸出結果:
4 1003 電視 3199
5 1003 冰箱 2999
7 1004 2 手機 7699
但是從結果看是錯誤的,這是由於計算次序的問題。在mysql中and擁有更高的優先順序,所以看似沒問題的組合被mysql錯誤的組合了,where後面的條件可以看成
(price>3000 and typeid=1003) or typeid=1004
可以用小括號來組合where後面的條件,小括號具有比and和or更高的優先順序。
所以,正確的寫法如下:
select * from commodity where (typeid=1003 or typeid=1004) and price>3000
輸出:4 1003 電視 3199
7 1004 2 手機 7699
in用來指定條件範圍
如下,查詢商品型別等於1001,1002的所有行
select * from commodity where typeid in (1001,1002)
輸出:1 1001 牙刷 10.5
2 1001 毛巾 21.5
3 1002 茶几 999.9
需要注意的是,大家不要當成between的另外一種寫法,小括號中可以有n個值,用逗號隔開,最後會返回指定字段出現在小括號中的所有行。
in和or的功能其實有些相同,但是in在遇到更多條件時會顯得更加簡潔。而且in的執行效率更快,最大的優點是可以包含select語句。比如小括號裡面你不確定是哪些值,需用實時的查詢,那麼select語句就可以寫在小括號裡面。
not用來否定後面跟著的條件。
如下,查詢商品型別不等於1001,1002的所有行
select * from commodity where typeid not in (1001,1002)
輸出:4 1003 電視 3199
5 1003 冰箱 2999
6 1004 1 手機 1999
7 1004 2 手機 7699
8 1004 .3 手機 699.9
9 1005 t恤 21.5
10 1005 牛仔褲 99
not支援對between、in、exists的取反。
where子句查詢
使用where關鍵進行查詢結果篩選 select 欄位名,欄位名,from表名 where 篩選條件 單條件篩選 單篩選條件 使用運算子進行篩選 單個條件中 注意 如果條件中的值為字元,必須使用單引號括起來 查詢所有的員工的工資資訊 select empno,ename,sal comm as 薪資...
Mysql效能優化 where子句優化
a and b and c or a and b and c and d a and b and c or a and b and c and d aand b c and a 5 b 5 and b c and a 5 b 5 and b 5 or b 6 and5 5 or b 7 and5 6...
SQL 過濾資料(使用WHERE子句)
只檢索所需要資料需要指定搜尋條件,搜尋條件也稱為過濾條件。在select語句中,資料根據where子句中指定的搜尋條件進行過濾,即where 子句用於過濾記錄,也就是where 子句用於提取那些滿足指定標準的記錄。where子句在表名 from子句 之後給出。where子句不僅用於select語法,...