mysql+where+且,MySQL WHERE
在使用 MySQL SELECT語句時,可以使用 WHERE 子句來指定查詢條件,從 FROM 子句的中間結果中選取適當的數據行,達到數據過濾的效果。
語法格式如下:
WHERE {,,…}
其中,判定運算其結果取值為 TRUE、FALSE 和 UNKNOWN。
判定運算的語法分類如下:
1、{=||>=|<=>|<>|!=}
2、[NOT]LIKE
3、[NOT][REGEXP|RLIKE]
4、[NOT]BETWEENAND
5、IS[NOT]NULL
單一條件的查詢語句
【實例 1】在表 測試表 中查詢身高為 170cm 的學生的姓名,輸入的 SQL 語句和行結果如下所示。
mysql> use 測試庫
Database changed
mysql> SELECT name,height FROM 測試表 WHERE height=170;
+-------+--------+
| name? | height |
+-------+--------+
| Susan |? ? 170 |
+-------+--------+
1 row in set (0.17 sec)
該語句采用了簡單的相等過濾,查詢一個指定列 height 的具體值 170。
【實例 2】查詢年齡小于 22 的學生的姓名,輸入的 SQL 語句和執行結果如下所示。
mysql> SELECT name,age FROM 測試表 WHERE age<22;
+------+------+
| name | age? |
+------+------+
| John |? ?21 |
+------+------+
1 row in set (0.05 sec)
可以看到,查詢結果中所有記錄的 age 字段的值均小于 22 歲,而大于或等于 22 歲的記錄沒有被返回。
多條件的查詢語句
使用 SELECT 查詢時,可以增加查詢的限制條件,這樣可以使查詢的結果更加精確。MySQL 在 WHERE 子句中使用 AND 操作符限定只有滿足所有查詢條件的記錄才會被返回。
可以使用 AND 連接兩個甚至多個查詢條件,多個條件表達式之間用 AND 分開。
【實例 3】在 測試表 表中查詢 age 大于 21,并且 height 大于等于 175 的學生的信息,輸入的 SQL 語句和執行結果如下所示。
mysql> SELECT * FROM 測試表 WHERE age>21 AND height>=175;
+----+--------+---------+------+------+--------+------------+
| id | name? ?| dept_id | age? | sex? | height | login_date |
+----+--------+---------+------+------+--------+------------+
|? 3 | Henry? |? ? ? ?2 |? ?23 | M? ? |? ? 185 | 2015-05-31 |
|? 5 | Jim? ? |? ? ? ?1 |? ?24 | M? ? |? ? 175 | 2016-01-15 |
|? 9 | Thomas |? ? ? ?3 |? ?22 | M? ? |? ? 178 | 2016-06-07 |
+----+--------+---------+------+------+--------+------------+
3 rows in set (0.06 sec)
注意:上例的 WHERE 子句中只包含一個 AND 語句,把兩個過濾條件組合在一起,實際上可以添加多個 AND 過濾條件,增加條件的同時增加一個 AND 關鍵字。
使用 LIKE 的模糊查詢
字符串匹配的語法格式如下:
[NOT] LIKE
字符串匹配是一種模式匹配,使用運算符 LIKE 設置過濾條件,過濾條件使用通配符進行匹配運算,而不是判斷是否相等進行比較。
相互間進行匹配運算的對象可以是 CHAR、VARCHAR、TEXT、DATETIME 等數據類型。運算返回的結果是 TRUE 或 FALSE。
利用通配符可以在不完全確定比較值的情形下創建一個比較特定數據的搜索模式,并置于關鍵字 LIKE 之后??梢栽谒阉髂J降娜我馕恢檬褂猛ㄅ浞?#xff0c;并且可以使用多個通配符。MySQL 支持的通配符有以下兩種:
一、百分號(%)
百分號是 MySQL 中常用的一種通配符,在過濾條件中,百分號可以表示任何字符串,并且該字符串可以出現任意次。
使用百分號通配符要注意以下幾點:
1、MySQL 默認是不區分大小寫的,若要區分大小寫,則需要更換字符集的校對規則。
2、百分號不匹配空值。
3、百分號可以代表搜索模式中給定位置的 0 個、1 個或多個字符。
4、尾空格可能會干擾通配符的匹配,一般可以在搜索模式的最后附加一個百分號。
二、下劃線(_)
下劃線通配符和百分號通配符的用途一樣,下劃線只匹配單個字符,而不是多個字符,也不是 0 個字符。
注意:不要過度使用通配符,對通配符檢索的處理一般會比其他檢索方式花費更長的時間。
【實例 4】在 測試表 表中,查找所有以“T”字母開頭的學生姓名,輸入的 SQL 的語句和執行結果如下所示。
mysql> SELECT name FROM 測試表 WHERE name LIKE 'T%';
+--------+
| name? ?|
+--------+
| Thomas |
| Tom? ? |
+--------+
2 rows in set (0.12 sec)
注意:在搜索匹配時,通配符“%”可以放在不同位置。
【實例 5】在 測試表 表中,查找所有包含“e”字母的學生姓名,輸入的 SQL 的語句和執行結果如下所示。
mysql> SELECT name FROM 測試表 WHERE name LIKE '%e%';
+-------+
| name? |
+-------+
| Green |
| Henry |
| Jane? |
+-------+
3 rows in set (0.00 sec)
由執行結果可以看出,該語句查詢字符串中包含字母 e 的學生的姓名,只要名字中有字母 e,其前面或后面無論有多少個字符,都滿足查詢的條件。
【實例 6】在 測試表 表中,查找所有以字母“y”結尾,且“y”前面只有 4 個字母的學生的姓名,輸入的 SQL 語句和執行結果如下所示。
mysql> SELECT name FROM 測試表 WHERE name LIKE '____y';
+-------+
| name? |
+-------+
| Henry |
+-------+
1 row in set (0.00 sec)
日期字段作為條件的查詢語句
以日期字段作為條件,可以使用比較運算符設置查詢條件,也可以使用 BETWEEN AND 運算符查詢某個范圍內的值。
BETWEEN AND 用來查詢某個范圍內的值,該操作符需要兩個參數,即范圍的開始值和結束值,若字段值滿足指定的范圍查詢條件,則這些記錄被返回。
【實例 7】在表 測試表 中查詢注冊日期在 2016-01-01 之前的學生的信息,輸入的 SQL 語句和執行結果如下所示。
mysql> SELECT * FROM 測試表 WHERE login_date
+----+-------+---------+------+------+--------+------------+
| id | name? |dept_id | age? | sex? | height | login_date |
+----+-------+---------+------+------+--------+------------+
|? 1 | Dany? |? ? ? ?1 |? ?25 | F? ? |? ? 160 | 2015-09-10 |
|? 3 | Henry |? ? ? ?2 |? ?23 | M? ? |? ? 185 | 2015-05-31 |
|? 6 | John? |? ? ? ?2 |? ?21 | M? ? |? ? 172 | 2015-11-11 |
|? 8 | Susan |? ? ? ?4 |? ?23 | F? ? |? ? 170 | 2015-10-01 |
+----+-------+---------+------+------+--------+------------+
4 rows in set (0.04 sec)
【實例 8】在表 測試表 中查詢注冊日期在 2015-10-01 和 2016-05-01 之間的學生的信息,輸入的 SQL 語句和執行結果如下所示。
mysql> SELECT * FROM 測試表 WHERE login_date BETWEEN '2015-10-01' AND '2016-05-01';
+----+-------+---------+------+------+--------+------------+
| id | name? |dept_id | age? | sex? | height | login_date |
+----+-------+---------+------+------+--------+------------+
|? 5 | Jim? ?|? ? ? ?1 |? ?24 | M? ? |? ? 175 | 2016-01-15 |
|? 6 | John? |? ? ? ?2 |? ?21 | M? ? |? ? 172 | 2015-11-11 |
|? 7 | Lily? |? ? ? ?6 |? ?22 | F? ? |? ? 165 | 2016-02-26 |
|? 8 | Susan |? ? ? ?4 |? ?23 | F? ? |? ? 170 | 2015-10-01 |
+----+-------+---------+------+------+--------+------------+
4 rows in set (0.02 sec)
注意:查詢日期數據的時候注意一下字段類型,最好是弄成時間日期型的字段。如果是文本型字段的話數據格式是國際通用型的話也能查詢的到數據,如果不是國際通用型的日期格式的話查詢的時候能查詢到數據,但是會出錯。具體的話大家可以自己去測試一下。
如有疑問可以聯系本人:
總結
以上是生活随笔為你收集整理的mysql+where+且,MySQL WHERE的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php图书信息浏览器,使PHP即时输出结
- 下一篇: mysql主从数据库怎么还口令,mysq