# MySQL where 子句
我們知道從MySQL表中使用SQL SELECT 語句來讀取數據。
如需有條件地從表中選取數據,可將 WHERE 子句添加到 SELECT 語句中。
### 語法
以下是SQL SELECT 語句使用 WHERE 子句從數據表中讀取數據的通用語法:
```
SELECT field1, field2,...fieldN 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數據表 tutorials_tbl 中的數據:
實例
以下實例將讀取 tutorials_tbl 表中 tutorial_author 字段值為 Sanjay 的所有記錄:
```
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl WHERE tutorial_author='Sanjay';
+-------------+----------------+-----------------+-----------------+
| tutorial_id | tutorial_title | tutorial_author | submission_date |
+-------------+----------------+-----------------+-----------------+
| 3 | JAVA Tutorial | Sanjay | 2007-05-21 |
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)
mysql>
```
除非你使用 LIKE 來比較字符串,否則MySQL的WHERE子句的字符串比較是不區分大小寫的。 你可以使用 BINARY 關鍵字來設定WHERE子句的字符串比較是區分大小寫的。
如下實例
```
root@host# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
Database changed
mysql> SELECT * from tutorials_tbl \
WHERE BINARY tutorial_author='sanjay';
Empty set (0.02 sec)
mysql>
```
## 使用PHP腳本讀取數據
你可以使用PHP函數的mysql_query()及相同的SQL SELECT 帶上 WHERE 子句的命令來獲取數據。
該函數用于執行SQL命令,然后通過 PHP 函數 mysql_fetch_array() 來輸出所有查詢的數據。
### 實例
以下實例將從 tutorials_tbl 表中返回使用 tutorial_author 字段值為 Sanjay 的記錄:
```
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT tutorial_id, tutorial_title,
tutorial_author, submission_date
FROM tutorials_tbl
WHERE tutorial_author="Sanjay"';
mysql_select_db('TUTORIALS');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
{
echo "Tutorial ID :{$row['tutorial_id']} <br> ".
"Title: {$row['tutorial_title']} <br> ".
"Author: {$row['tutorial_author']} <br> ".
"Submission Date : {$row['submission_date']} <br> ".
"--------------------------------<br>";
}
echo "Fetched data successfully\n";
mysql_close($conn);
?>
```
- SQL基礎
- SQL 簡介
- SQL 語法
- SQL SELECT 語句
- SQL SELECT DISTINCT 語句
- SQL WHERE 子句
- SQL AND & OR 運算符
- SQL ORDER BY 子句
- SQL INSERT INTO 語句
- SQL UPDATE 語句
- SQL DELETE 語句
- SQL高級
- SQL TOP 子句
- SQL LIKE 操作符
- SQL 通配符
- SQL IN 操作符
- SQL BETWEEN 操作符
- SQL Alias(別名)
- SQL JOIN
- SQL INNER JOIN 關鍵字
- SQL LEFT JOIN 關鍵字
- SQL RIGHT JOIN 關鍵字
- SQL FULL JOIN 關鍵字
- SQL UNION 和 UNION ALL 操作符
- SQL SELECT INTO 語句
- SQL CREATE DATABASE 語句
- SQL CREATE TABLE 語句
- SQL 約束 (Constraints)
- SQL NOT NULL 約束
- SQL UNIQUE 約束
- SQL PRIMARY KEY 約束
- SQL FOREIGN KEY 約束
- SQL CHECK 約束
- SQL DEFAULT 約束
- SQL CREATE INDEX 語句
- SQL 撤銷索引、表以及數據庫
- SQL ALTER TABLE 語句
- SQL AUTO INCREMENT 字段
- SQL VIEW(視圖)
- SQL函數
- SQL Date 函數
- SQL NULL 值
- SQL NULL 函數
- SQL 數據類型
- SQL 服務器 - RDBMS
- SQL 函數
- SQL AVG 函數
- SQL COUNT() 函數
- SQL FIRST() 函數
- SQL LAST() 函數
- SQL MAX() 函數
- SQL MIN() 函數
- SQL SUM() 函數
- SQL GROUP BY 語句
- SQL HAVING 子句
- SQL UCASE() 函數
- SQL LCASE() 函數
- SQL MID() 函數
- SQL LEN() 函數
- SQL ROUND() 函數
- SQL NOW() 函數
- SQL FORMAT() 函數
- SQL 快速參考
- SQLite 基礎
- SQLite 簡介
- SQLite 安裝
- SQLite 命令
- SQLite 語法
- SQLite 數據類型
- SQLite 創建數據庫
- SQLite 附加數據庫
- SQLite 分離數據庫
- SQLite 創建表
- SQLite 刪除表
- SQLite Insert 語句
- SQLite Select 語句
- SQLite 運算符
- SQLite 表達式
- SQLite Where 子句
- SQLite AND/OR 運算符
- SQLite Update 語句
- SQLite Delete 語句
- SQLite Like 子句
- SQLite Glob 子句
- SQLite Limit 子句
- SQLite Order By
- SQLite Group By
- SQLite Having 子句
- SQLite Distinct 關鍵字
- SQLite 高級
- SQLite PRAGMA
- SQLite 約束
- SQLite Joins
- SQLite Unions 子句
- SQLite NULL 值
- SQLite 別名
- SQLite 觸發器(Trigger)
- SQLite 索引(Index)
- SQLite Indexed By
- SQLite Alter 命令
- SQLite Truncate Table
- SQLite 視圖(View)
- SQLite 事務(Transaction)
- SQLite 子查詢
- SQLite Autoincrement(自動遞增)
- SQLite 注入
- SQLite Explain(解釋)
- SQLite Vacuum
- SQLite 日期 & 時間
- SQLite 常用函數
- SQLite 接口
- SQLite - C/C++
- SQLite - Java
- SQLite - PHP
- SQLite - Perl
- SQLite - Python
- MySQL 教程
- MySQL 教程
- MySQL 安裝
- MySQL 管理
- MySQL PHP 語法
- MySQL 連接
- MySQL 創建數據庫
- MySQL 刪除數據庫
- MySQL 選擇數據庫
- MySQL 數據類型
- MySQL 創建數據表
- MySQL 刪除數據表
- MySQL 插入數據
- MySQL 查詢數據
- MySQL where 子句
- MySQL UPDATE 查詢
- MySQL DELETE 語句
- MySQL LIKE 子句
- MySQL 排序
- Mysql Join的使用
- MySQL NULL 值處理
- MySQL 正則表達式
- MySQL 事務
- MySQL ALTER命令
- MySQL 索引
- MySQL 臨時表
- MySQL 復制表
- MySQL 元數據
- MySQL 序列使用
- MySQL 處理重復數據
- MySQL 及 SQL 注入
- MySQL 導出數據
- MySQL 導入數據
- 免責聲明