# MySQL WHERE 子句
我們知道從 MySQL 表中使用 SQL SELECT 語句來讀取數據。
如需有條件地從表中選取數據,可將 WHERE 子句添加到 SELECT 語句中。
### 語法
以下是 SQL SELECT 語句使用 WHERE 子句從數據表中讀取數據的通用語法:
~~~
SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
~~~
* 查詢語句中你可以使用一個或者多個表,表之間使用逗號,分割,并使用WHERE語句來設定查詢條件。
* 你可以在 WHERE 子句中指定任何條件。
* 你可以使用 AND 或者 OR 指定一個或多個條件。
* WHERE 子句也可以運用于 SQL 的 DELETE 或者 UPDATE 命令。
* WHERE 子句類似于程序語言中的 if 條件,根據 MySQL 表中的字段值來讀取指定的數據。
以下為操作符列表,可用于 WHERE 子句中。
下表中實例假定 A 為 10, B 為 20
| 操作符 | 描述 | 實例 |
| --- | --- | --- |
| \= | 等號,檢測兩個值是否相等,如果相等返回true | (A = B) 返回false。 |
| <>, != | 不等于,檢測兩個值是否相等,如果不相等返回true | (A != B) 返回 true。 |
| \> | 大于號,檢測左邊的值是否大于右邊的值, 如果左邊的值大于右邊的值返回true | (A > B) 返回false。 |
| < | 小于號,檢測左邊的值是否小于右邊的值, 如果左邊的值小于右邊的值返回true | (A < B) 返回 true。 |
| \>= | 大于等于號,檢測左邊的值是否大于或等于右邊的值, 如果左邊的值大于或等于右邊的值返回true | (A >= B) 返回false。 |
| <= | 小于等于號,檢測左邊的值是否小于或等于右邊的值, 如果左邊的值小于或等于右邊的值返回true | (A <= B) 返回 true。 |
如果我們想在 MySQL 數據表中讀取指定的數據,WHERE 子句是非常有用的。
使用主鍵來作為 WHERE 子句的條件查詢是非常快速的。
如果給定的條件在表中沒有任何匹配的記錄,那么查詢不會返回任何數據。
* * *
## 從命令提示符中讀取數據
我們將在SQL SELECT語句使用WHERE子句來讀取MySQL數據表 runoob\_tbl 中的數據:
實例
以下實例將讀取 runoob\_tbl 表中 runoob\_author 字段值為 Sanjay 的所有記錄:
## SQL SELECT WHERE 子句
SELECT \* from runoob\_tbl WHERE runoob\_author\='菜鳥教程';
輸出結果:

MySQL 的 WHERE 子句的字符串比較是不區分大小寫的。 你可以使用 BINARY 關鍵字來設定 WHERE 子句的字符串比較是區分大小寫的。
如下實例:
## BINARY 關鍵字
mysql\> SELECT \* from runoob\_tbl WHERE BINARY runoob\_author\='runoob.com'; Empty set (0.01 sec) mysql\> SELECT \* from runoob\_tbl WHERE BINARY runoob\_author\='RUNOOB.COM'; +-----------+---------------+---------------+-----------------+ | runoob\_id | runoob\_title | runoob\_author | submission\_date | +-----------+---------------+---------------+-----------------+ | 3 | JAVA 教程 | RUNOOB.COM | 2016\-05\-06 | | 4 | 學習 Python | RUNOOB.COM | 2016\-03\-06 | +-----------+---------------+---------------+-----------------+ 2 rows in set (0.01 sec)
實例中使用了**BINARY**關鍵字,是區分大小寫的,所以**runoob\_author='runoob.com'**的查詢條件是沒有數據的。
* * *
## 使用PHP腳本讀取數據
你可以使用 PHP 函數的 mysqli\_query() 及相同的 SQL SELECT 帶上 WHERE 子句的命令來獲取數據。
該函數用于執行 SQL 命令,然后通過 PHP 函數 mysqli\_fetch\_array() 來輸出所有查詢的數據。
### 實例
以下實例將從 runoob\_tbl 表中返回使用 runoob\_author 字段值為RUNOOB.COM的記錄:
## MySQL WHERE 子句測試:
菜鳥教程 MySQL WHERE 子句測試'; echo '教程 ID標題作者提交日期'; while($row = mysqli\_fetch\_array($retval, MYSQLI\_ASSOC)) { echo " {$row\['runoob\_id'\]} ". "{$row\['runoob\_title'\]} ". "{$row\['runoob\_author'\]} ". "{$row\['submission\_date'\]} ". ""; } echo ''; // 釋放內存 mysqli\_free\_result($retval); mysqli\_close($conn); ?>
輸出結果如下所示:
##
**where:**數據庫中常用的是where關鍵字,用于在初始表中篩選查詢。它是一個約束聲明,用于約束數據,在返回結果集之前起作用。
**group by:**對select查詢出來的結果集按照某個字段或者表達式進行分組,獲得一組組的集合,然后從每組中取出一個指定字段或者表達式的值。
**having:**用于對where和group by查詢出來的分組經行過濾,查出滿足條件的分組結果。它是一個過濾聲明,是在查詢返回結果集以后對查詢結果進行的過濾操作。
**執行順序**
select –>where –> group by–> having–>order by
上面執行順序有誤。谷歌來的順序是這樣的
1. FROM, including JOINs
2. WHERE
3. GROUP BY
4. HAVING
5. WINDOW functions
6. SELECT
7. DISTINCT
8. UNION
9. ORDER BY
10. LIMIT and OFFSET
- PHP
- php 簡單語法
- php 語法
- PHP書寫歸范總結
- 代碼縮進
- 變量賦值時候
- if條件判斷
- 避免嵌入式賦值
- 函數和方法的注釋
- php 開發常見問題總結
- 1、查找兩個經緯度之間的距離
- 2、PHP常量詳解:define和const的區別
- 3、常見面試題及特殊情況
- mysql
- MySQL 介紹
- MySQL 及 SQL 注入
- mysql常見問題
- MySQL數據類型
- MySQL where語句
- MySQL alter 命令
- MySQL 索引
- MySQL 復制表
- MySQL 處理重復數據
- redis
- redis介紹
- redis數據類型(共5種 )
- redis常見問題及使用場景
- redis事務
- Redis 分區
- Linux
- Linux介紹
- Linux 系統目錄結構
- Linux 文件與目錄管理
- shell
- Shell 教程介紹
- html+css+js
- 優秀技術文章
- 技術鏈接
- go語言
- go開發規范及注意事項
- go簡單語法
- go開發技術總結
- 博客
- 小程序
- 1、頁面跳轉