首頁 >資料庫 >mysql教程 >一文詳解如何巧妙使用MySQL WHERE子句

一文詳解如何巧妙使用MySQL WHERE子句

藏色散人
藏色散人轉載
2023-04-01 06:30:011815瀏覽

這篇文章為大家帶來了關於MySQL 的相關知識,其中主要介紹了MySQL WHERE子句的使用,有興趣的朋友下面一起來看一下吧,希望對大家有幫助。

一文詳解如何巧妙使用MySQL WHERE子句

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。 a8093152e673feb7aba1828c43532094, !=不等於,偵測兩個值是否相等,如果不相等回傳true(A != B) 回傳true。 大於號,偵測左邊的值是否大於右邊的值, 如果左邊的值大於右邊的值回傳true(A > B) 回傳false。 96ca68235732ef4430a1e5060077b989=大於等於號,偵測左邊的值是否大於或等於右邊的值, 如果左邊的值大於或等於右邊的值回傳true(A >= B) 回傳false。 <=小於等於號,偵測左邊的值是否小於或等於右邊的值, 如果左邊的值小於或等於右邊的值回傳true(A <= B) 回傳true。
#運算子
如果我們想在 MySQL 資料表中讀取指定的數據,WHERE 子句是非常有用的。

使用主鍵來作為 WHERE 子句的條件查詢是非常快速的。

如果給定的條件在表中沒有任何符合的記錄,那麼查詢不會傳回任何資料。


從命令提示字元讀取資料

我們將在SQL SELECT語句使用WHERE子句來讀取MySQL資料表kxdang_tbl 中的資料:

實例

以下實例將讀取kxdang_tbl 表中kxdang_author 欄位值為Sanjay 的所有記錄:

SQL SELECT WHERE 子句

SELECT * from kxdang_tbl WHERE kxdang_author='菜鸟教程';

輸出結果:


MySQL 的WHERE 子句的字串比較是不區分大小寫的。你可以使用 BINARY 關鍵字來設定 WHERE 子句的字串比較是區分大小寫的。

如下實例:

BINARY 關鍵字

mysql> SELECT * from kxdang_tbl WHERE BINARY kxdang_author=&#39;kxdang.com&#39;;
Empty set (0.01 sec)
 
mysql> SELECT * from kxdang_tbl WHERE BINARY kxdang_author=&#39;RUNOOB.COM&#39;;
+-----------+---------------+---------------+-----------------+
| kxdang_id | kxdang_title  | kxdang_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 關鍵字,是區分大小寫的,所以 kxdang_author ='kxdang.com'  的查詢條件是沒有資料的。


使用PHP腳本讀取資料

你可以使用 PHP 函數的 mysqli_query() 及相同的 SQL SELECT 帶上 WHERE 子句的指令來取得資料。

此函數用於執行 SQL 指令,然後透過 PHP 函數 mysqli_fetch_array() 來輸出所有查詢的資料。

實例

以下實例將從kxdang_tbl 表傳回使用kxdang_author 欄位值為RUNOOB.COM 的記錄:

MySQL WHERE 子句測試:

<?php
$dbhost = &#39;localhost&#39;;  // mysql服务器主机地址
$dbuser = &#39;root&#39;;            // mysql用户名
$dbpass = &#39;123456&#39;;          // mysql用户名密码
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn )
{
    die(&#39;连接失败: &#39; . mysqli_error($conn));
}
// 设置编码,防止中文乱码
mysqli_query($conn , "set names utf8");
 
// 读取 kxdang_author 为 RUNOOB.COM 的数据
$sql = &#39;SELECT kxdang_id, kxdang_title, 
        kxdang_author, submission_date
        FROM kxdang_tbl
        WHERE kxdang_author="RUNOOB.COM"&#39;;
 
mysqli_select_db( $conn, &#39;RUNOOB&#39; );
$retval = mysqli_query( $conn, $sql );
if(! $retval )
{
    die(&#39;无法读取数据: &#39; . mysqli_error($conn));
}
echo &#39;<h2>菜鸟教程 MySQL WHERE 子句测试<h2>&#39;;
echo &#39;<table border="1"><tr><td>教程 ID</td><td>标题</td><td>作者</td><td>提交日期</td></tr>&#39;;
while($row = mysqli_fetch_array($retval, MYSQLI_ASSOC))
{
    echo "<tr><td> {$row[&#39;kxdang_id&#39;]}</td> ".
         "<td>{$row[&#39;kxdang_title&#39;]} </td> ".
         "<td>{$row[&#39;kxdang_author&#39;]} </td> ".
         "<td>{$row[&#39;submission_date&#39;]} </td> ".
         "</tr>";
}
echo &#39;</table>&#39;;
// 释放内存
mysqli_free_result($retval);
mysqli_close($conn);
?>

推薦學習:《

MySQL影片教學

#

以上是一文詳解如何巧妙使用MySQL WHERE子句的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:juejin.im。如有侵權,請聯絡admin@php.cn刪除
上一篇:mysql ga是什麼下一篇:mysql ga是什麼