鍍金池/ 教程/ 數(shù)據(jù)庫/ MySQL Where Clause
MySQL 復(fù)制表
MySQL ALTER 命令
MySQL 安裝
MySQL 日期與時間方面的函數(shù)
MySQL SQL Injection
MySQL 排序結(jié)果
MySQL 臨時表
MySQL 介紹
MySQL 數(shù)據(jù)導(dǎo)出
MySQL 索引
MySQL 數(shù)值函數(shù)
MySQL 更新查詢
MySQL UNION 關(guān)鍵字
MySQL RAND 函數(shù)
創(chuàng)建 MySQL 數(shù)據(jù)庫
MySQL AVG 函數(shù)
MySQL Using Join
MySQL Handling Duplicates
MySQL SUM 函數(shù)
MySQL 數(shù)據(jù)類型
MySQL 插入查詢
MySQL 字符串函數(shù)
MySQL Using Sequences
MySQL 管理
MySQL 數(shù)據(jù)導(dǎo)入
MySQL BETWEEN 子句
MySQL MIN 函數(shù)
創(chuàng)建 MySQL 表
MySQL Group By 子句
MySQL COUNT 函數(shù)
MySQL 匯報
MySQL 選擇數(shù)據(jù)庫
MySQL Where Clause
MySQL 選擇查詢
MySQL Like Clause
MySQL 正則表達式
一些非常有用的學(xué)習(xí)資源
MySQL NULL Values
MySQL 刪除查詢
MySQL 數(shù)據(jù)庫信息
一些有用的 MySQL 函數(shù)與子句
MySQL 刪除表
MySQL MAX 函數(shù)
MySQL SQRT 函數(shù)
MySQL 終止數(shù)據(jù)庫
連接 MySQL 服務(wù)器
MySQL IN 子句
MySQL CONCAT 函數(shù)
MySQL PHP語法

MySQL Where Clause

前面介紹了利用 SELECT 命令從表中獲取數(shù)據(jù)。利用一種叫做 WHERE 子句的條件子句可以過濾結(jié)果。使用 WHERE 子句可以制定選擇規(guī)則,從表中選擇我們所需的記錄。

語法格式

利用 SELECT 命令與 WHERE 子句從表中獲取數(shù)據(jù)的一般語法格式如下所示:

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
  • 可以使用逗號分隔一個或多個表,從而在使用 WHERE 子句時,包含多個條件。但是 WHERE 子句并非 SELECT 命令的一個可選部分。
  • 可以在使用 WHERE 子句時指定任何條件。
  • 可以通過 ANDOR 運算符來指定一個或多個條件。
  • WHERE 子句可以和 DELETE 或 UPDATE 命令一起使用,同樣是用于指定條件。

WHERE 子句的運作方式就像編程語言中的 if 條件語句一樣。它會將給定值與MySQL表中的字段值進行對比,如果兩值相等,則返回MySQL表中字段值的所在的行。

下面這張表列出了 WHERE 子句中使用的一些運算符。

假設(shè)字段 A 保存 10 這個值,字段 B 保存著 20,那么:

運算符 說明 范例
= 檢查兩個操作數(shù)是否相等。如果相等,則條件為真。 (A = B)非真
!= 檢查兩個操作數(shù)是否相等。如果不相等,則條件為真。 (A != B)為真
> 檢查左側(cè)操作數(shù)是否大于右邊的操作數(shù)。如果大于,則條件為真。 (A > B)非真
< 檢查左側(cè)操作數(shù)是否小于右側(cè)操作數(shù)。如果小于,則條件為真。 (A < B)為真
>= 檢查左側(cè)操作數(shù)是否大于或等于右側(cè)操作數(shù)。如果是,則條件為真。 (A >= B)非真
<= 檢查左側(cè)操作數(shù)是否小于或等于右側(cè)操作數(shù)。如果是,則條件為真 (A <= B)為真

WHERE 子句可以非常方便地獲取表中選定的行,尤其與 MySQL 的 Join 一起使用時。Join 稍后將擇章另述。

另外,為了加快搜索,往往使用主鍵搜索記錄。

如果表中記錄并不匹配給定條件,查詢不會返回任何數(shù)據(jù)。

采用命令行方式獲取數(shù)據(jù)

使用 SQL 的 SELECT 命令與 WHERE 子句獲取 表 tutorials_tbl 中的選定數(shù)據(jù)。

范例

以下范例將返回表 tutorials_tbl 中作者名稱(author name)為 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 比對,否則默認比對是不區(qū)分大小寫的。要想讓搜索對大小寫敏感,可以如下例一般,使用 BINARY 關(guān)鍵字。

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 腳本來獲取數(shù)據(jù)

要想獲取表中數(shù)據(jù),也可以使用 PHP 函數(shù) mysql_query(),同時配合使用 SQL 的 SELECT 命令與 WHERE 子句。先用 mysql_query() 執(zhí)行 SQL 命令,再用另一 PHP 函數(shù) mysql_fetch_array() 來獲取所有選定數(shù)據(jù)。mysql_fetch_array() 會將行以關(guān)聯(lián)數(shù)組、數(shù)值數(shù)組,或者兩種兼有》》的形式返回。如果未選定任何數(shù)據(jù),則該函數(shù)返回 FALSE。

范例

以下范例將返回表 tutorials_tbl 中作者名為 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);
?>