MySQL過濾數據.md

第六章 過濾數據

     使用WHERE子句,指定搜索條件。

6.1 使用WHERE子句

只檢索所需數據需要指定搜索條件(search criteria),在使用SELECT語句中,數據根據WHERE子句中指定的條件進行搜索。如下,

mysql> SELECT prod_name, prod_price FROM products WHERE prod_price = 2.50;
+---------------+------------+
| prod_name     | prod_price |
+---------------+------------+
| Carrots       |       2.50 |
| TNT (1 stick) |       2.50 |
+---------------+------------+
  • 注意,語句順序。在同時使用ORDER BYWHERE子句時,ORDER BY位於WHERE後。

6.2 WHERE子句操作符

操作符 說明
= 等於
<> 不等於
!= 不等於
< 小於
> 大於
<= 小於等於
=
大於等於
BETWEEN 在指定的兩個值之間

6.2.1 檢測單個值

mysql> SELECT prod_name, prod_price FROM products WHERE prod_name = 'fuses';
+-----------+------------+
| prod_name | prod_price |
+-----------+------------+
| Fuses     |       3.42 |
+-----------+------------+

分析,由於MySQL不區分大小寫,所以prod_name值區fusesFuses是相同的。

mysql> SELECT prod_name, prod_price FROM products WHERE prod_price < 10;
+---------------+------------+
| prod_name     | prod_price |
+---------------+------------+
| .5 ton anvil  |       5.99 |
| 1 ton anvil   |       9.99 |
| Carrots       |       2.50 |
| Fuses         |       3.42 |
| Oil can       |       8.99 |
| Sling         |       4.49 |
| TNT (1 stick) |       2.50 |
+---------------+------------+

6.2.2 不匹配檢查

例如,不是由供應商1003供應的產品,

mysql> SELECT prod_name, prod_price FROM products WHERE vend_id <> 1003;
+--------------+------------+
| prod_name    | prod_price |
+--------------+------------+
| .5 ton anvil |       5.99 |
| 1 ton anvil  |       9.99 |
| 2 ton anvil  |      14.99 |
| Fuses        |       3.42 |
| JetPack 1000 |      35.00 |
| JetPack 2000 |      55.00 |
| Oil can      |       8.99 |
+--------------+------------+
  • 注意,如何使用引號。單引號用來限定字符串。如果值與串類型的列比較,需要增加限定引號; 與數據比較,不需要增加引號。

6.2.3 範圍值查找

使用BETWEEN操作符,進行範圍查找。可以檢索數值,或者日期。

mysql> SELECT prod_name, prod_price FROM products WHERE prod_price BETWEEN 5 AND 10;
+----------------+------------+
| prod_name      | prod_price |
+----------------+------------+
| .5 ton anvil   |       5.99 |
| 1 ton anvil    |       9.99 |
| Bird seed      |      10.00 |
| Oil can        |       8.99 |
| TNT (5 sticks) |      10.00 |
+----------------+------------+

說明,BETWEENAND操作數據,包括兩個邊界值

6.2.4 空值檢查

NULL空值,與字段0、空字符或僅僅空格是不同的。
SELECT語句中,有特色WHERE子句用來檢索空值,IS NULL.

mysql> SELECT prod_name FROM products WHERE prod_price IS NULL;
Empty set (0.00 sec)
mysql> SELECT cust_id FROM customers WHERE cust_email IS NULL;
+---------+
| cust_id |
+---------+
|   10002 |
|   10005 |
|   10006 |
|   10007 |
|   10008 |
+---------+
  • 注意,在過濾數據時,一定要驗證是否包含NULL的空行。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章