Node.js - MySQL Where 子句



在 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();
});

输出

[ 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还支持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 }
]