• Node.js Video Tutorials

Node.js - MySQL WHERE 子句



在 MySQL 中,WHERE 子句可以用於 SELECT、DELETE 和 UPDATE 查詢。WHERE 子句允許您為查詢返回的行指定搜尋條件。當在 Node.js 應用程式中使用 mysql 模組時,連線物件的 query() 方法執行查詢字串。要對 SELECT、UPDATE 或 DELETE 查詢應用篩選器,可以使用 WHERE 子句。本章解釋了在 Node.js 應用程式中使用 WHERE 子句的各種示例。

以下是 SELECT 語句中 WHERE 子句的語法:

SELECT 
   select_list
FROM
   table_name
WHERE
   search_condition;

search_condition 是使用邏輯運算子 AND、OR 和 NOT 組合的一個或多個表示式的組合。

WHERE 子句中使用的各種運算子:

序號 運算子及描述
1

=

等於 (=)

2

>

大於 (>)

3

<

小於 (<)

4

>=

大於等於 (>=)

5

<=

小於等於 (<=)

6

!=

不等於 (!= 或 <>)

7

BETWEEN

在特定範圍內

8

LIKE

搜尋模式

9

IN

為列指定多個可能的值

在 MySQL 中,謂詞是一個布林表示式,其計算結果為 TRUE、FALSE 或 UNKNOWN。SELECT 語句將包含結果集中滿足 search_condition 的任何行。

邏輯運算子

在下面的 Node.js 應用程式程式碼中,傳遞給 query() 方法的 SELECT 查詢字串使用 WHERE 子句來獲取工資超過 25000 元的員工記錄。

示例

var mysql = require('mysql');
var con = mysql.createConnection({
   host: "localhost",
   user: "root",
   password: "mypassword",

   database: "mydb"
});

var qry =`SELECT name,salary FROM employee WHERE salary>25000;`;
con.connect(function (err) {
   if (err) throw err;
   console.log("Connected!");
  
   con.query(qry, function (err, results) {
      if (err) throw err;
      console.log(results);
   });

   con.end();
});

輸出

[
  RowDataPacket { name: 'Anil', salary: 30000 },
  RowDataPacket { name: 'Meena', salary: 27000 }
]

WHERE 子句中的篩選條件可以是複合邏輯表示式,其中使用比較運算子 (>、<、>=、<=、==、=) 的各個邏輯表示式使用 AND、OR 或 NOT 運算子組合。

讓我們更改 query() 方法中的 SELECT 查詢,以便對 salary 欄位應用條件,使其大於 25000 且小於 30000。

示例

var mysql = require('mysql');
var con = mysql.createConnection({
   host: "localhost",
   user: "root",
   password: "mypassword",
   database: "mydb"
});

var qry =`SELECT name,salary FROM employee WHERE salary>25000 and salary>30000;`;
con.connect(function (err) {
   if (err) throw err;
   console.log("Connected!");
  
   con.query(qry, function (err, results) {
      if (err) throw err;
      console.log(results);
   });

   con.end();
});

輸出

[ RowDataPacket { name: 'Meena', salary: 27000 } ]

BETWEEN

BETWEEN 檢查特定欄位值是否落在給定範圍內。以下查詢字串獲取工資在 27000 到 30000 之間的員工。在上面的程式碼中,將 qry 變數更改為以下表達式,保持其餘程式碼不變。

示例

var qry =`SELECT name,salary FROM employee WHERE salary BETWEEN 27000 and 30000;`;

輸出

[
  RowDataPacket { name: 'Anil', salary: 30000 },
  RowDataPacket { name: 'Meena', salary: 27000 }
]

LIKE

LIKE 運算子如果值與指定的模式匹配,則計算結果為 TRUE。要形成模式,可以使用 % 和 _ 萬用字元。% 萬用字元匹配任何零個或多個字元的字串,而 _ 萬用字元匹配任何單個字元。

將查詢字串變數更改為以下內容。

var qry =`SELECT name,salary FROM employee WHERE name LIKE '%n%';`;

結果集將包括名稱中任何位置包含字母“n”的姓名。

[
  RowDataPacket { name: 'Anil', salary: 30000 },
  RowDataPacket { name: 'Meena', salary: 27000 }
]

IN

MySQL 還支援與 WHERE 子句一起使用的 IN 運算子。如果值與列表中的任何值匹配,則 IN 運算子返回 TRUE。

value IN (value1, value2,...)

將程式碼中的查詢字串更改為以下內容。

var qry =`SELECT name,salary FROM employee WHERE name IN ('Anil', 'Tina', 'Ravi');`;

這將返回結果集,其中包含在給定列表中找到名稱的行。

[
  RowDataPacket { name: 'Ravi', salary: 25000 },
  RowDataPacket { name: 'Anil', salary: 30000 }
]
廣告