在 MySQL 中,WHERE 子句可用于 SELECT、DELETE 和 UPDATE 查询。WHERE 子句允许您为查询返回的行指定搜索条件。将 mysql 模块与 Node.js 应用程序一起使用时,连接对象的 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 子句中使用的各种运算符是:
运算符 | 描述 |
---|---|
= |
等于 |
> |
大于 |
< |
小于 |
>= |
大于或等于 |
<= |
小于或等于 |
!= |
不相等 |
BETWEEN |
在一定范围内 |
LIKE |
搜索模式 |
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();
});
输出
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还支持IN运算符和WHERE子句。如果值与列表中的任何值匹配,则 IN 运算符返回 TRUE。
value IN (value1, value2,...)
将代码中的查询字符串更改为 following。
var qry =`SELECT name,salary FROM employee WHERE name IN ('Anil', 'Tina', 'Ravi');`;
这将返回结果集,其中在给定列表中可以找到带有名称的行。
[
RowDataPacket { name: 'Ravi', salary: 25000 },
RowDataPacket { name: 'Anil', salary: 30000 }
]