• 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 }
]
广告