MySQL where 子句

2022-08-04 17:15 更新

我們知道從MySQL表中使用SQL SELECT 語(yǔ)句來(lái)讀取數(shù)據(jù)。

如需有條件地從表中選取數(shù)據(jù),可將 WHERE 子句添加到 SELECT 語(yǔ)句中。

語(yǔ)法

以下是SQL SELECT 語(yǔ)句使用 WHERE 子句從數(shù)據(jù)表中讀取數(shù)據(jù)的通用語(yǔ)法:

SELECT field1, field2,...fieldN FROM table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
  • 查詢語(yǔ)句中你可以使用一個(gè)或者多個(gè)表,表之間使用逗號(hào)(,)分割,并使用WHERE語(yǔ)句來(lái)設(shè)定查詢條件。
  • 你可以在WHERE子句中指定任何條件。
  • 你可以使用AND或者OR指定一個(gè)或多個(gè)條件。
  • WHERE子句也可以運(yùn)用于SQL的 DELETE 或者 UPDATE 命令。
  • WHERE 子句類似于程序語(yǔ)言中的if條件,根據(jù) MySQL 表中的字段值來(lái)讀取指定的數(shù)據(jù)。

以下為操作符列表,可用于 WHERE 子句中。

下表中實(shí)例假定 A為10 B為20

操作符描述實(shí)例
=等號(hào),檢測(cè)兩個(gè)值是否相等,如果相等返回true(A = B) 返回false。
<> 或 !=不等于,檢測(cè)兩個(gè)值是否相等,如果不相等返回true(A != B) 返回 true。
>大于號(hào),檢測(cè)左邊的值是否大于右邊的值, 如果左邊的值大于右邊的值返回true(A > B) 返回false。
<小于號(hào),檢測(cè)左邊的值是否小于右邊的值, 如果左邊的值小于右邊的值返回true(A < B) 返回 true。
>=大于等于號(hào),檢測(cè)左邊的值是否大于或等于右邊的值, 如果左邊的值大于或等于右邊的值返回true(A >= B) 返回false。
<=小于等于號(hào),檢測(cè)左邊的值是否小于于或等于右邊的值, 如果左邊的值小于或等于右邊的值返回true(A <= B) 返回 true。

如果我們想再M(fèi)ySQL數(shù)據(jù)表中讀取指定的數(shù)據(jù),WHERE 子句是非常有用的。

使用主鍵來(lái)作為 WHERE 子句的條件查詢是非??焖俚摹?/p>

如果給定的條件在表中沒(méi)有任何匹配的記錄,那么查詢不會(huì)返回任何數(shù)據(jù)。


從命令提示符中讀取數(shù)據(jù)

我們將在SQL SELECT語(yǔ)句使用WHERE子句來(lái)讀取MySQL數(shù)據(jù)表 w3cschool_tbl 中的數(shù)據(jù):

實(shí)例

以下實(shí)例將讀取 w3cschool_tbl 表中 w3cschool_author 字段值為 Sanjay 的所有記錄:

root@host# mysql -u root -p password;
Enter password:
mysql> use W3CSCHOOL;
Database changed
mysql> SELECT * from w3cschool_tbl WHERE w3cschool_author='Sanjay';
+-------------+----------------+-----------------+-----------------+
| w3cschool_id | w3cschool_title | w3cschool_author | submission_date |
+-------------+----------------+-----------------+-----------------+
|           3 | JAVA Tutorial  | Sanjay          | 2007-05-21      |
+-------------+----------------+-----------------+-----------------+
1 rows in set (0.01 sec)

mysql>

除非你使用 LIKE 來(lái)比較字符串,否則MySQL的WHERE子句的字符串比較是不區(qū)分大小寫的。 你可以使用 BINARY 關(guān)鍵字來(lái)設(shè)定WHERE子句的字符串比較是區(qū)分大小寫的。

如下實(shí)例

root@host# mysql -u root -p password;
Enter password:
mysql> use W3CSCHOOL;
Database changed
mysql> SELECT  from w3cschool_tbl \
          WHERE BINARY w3cschool_author='sanjay';
Empty set (0.02 sec)

mysql>


使用PHP腳本讀取數(shù)據(jù)

你可以使用PHP函數(shù)的mysql_query()及相同的SQL SELECT 帶上 WHERE 子句的命令來(lái)獲取數(shù)據(jù)。

該函數(shù)用于執(zhí)行SQL命令,然后通過(guò) PHP 函數(shù) mysql_fetch_array() 來(lái)輸出所有查詢的數(shù)據(jù)。

實(shí)例

以下實(shí)例將從 w3cschool_tbl 表中返回使用 w3cschool_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 w3cschool_id, w3cschool_title,
               w3cschool_author, submission_date
        FROM w3cschool_tbl
        WHERE w3cschool_author="Sanjay"';

mysql_select_db('W3CSCHOOL'); $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['w3cschool_id']}
". "Title: {$row['w3cschool_title']} ". "Author: {$row['w3cschool_author']} ". "Submission Date : {$row['submission_date']} ". "-------------------------------- "; } echo "Fetched data successfully\n"; mysql_close($conn); ?>


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)