Node.js - MySQL Delete



在对 MySQL 数据库执行的 CRUD 操作中,DELETE 查询有助于从表中删除一行或多行。在本章中,我们将展示如何在 Node.js 应用程序中调用 MySQL DELETE 语句。

基本的DELETE查询具有以下语法 -


DELETE FROM table_name
WHERE condition;

尽管 WHERE 子句是可选的,但它很可能是固定使用的,否则它将删除表中的所有行。

简单 DELETE

在以下Node.js代码中,将 DELETE 查询字符串传递给 mysql.query() 方法。该程序将删除所有年龄为 >25 岁的员工记录。


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

var qry ="DELETE FROM employee WHERE age>25;";
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();
});

输出


OkPacket {
fieldCount: 0,
  affectedRows: 0,
  insertId: 0,
  serverStatus: 34,
  warningCount: 0,
  message: '',
  protocol41: true,
  changedRows: 0
}

从上述代码中的查询字符串中删除 WHERE 子句。


var qry ="DELETE FROM employee;";
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();
});

现在打开命令行客户端并运行 SELECT 查询


mysql> select * from employee;
Empty set (0.00 sec)

您可以看到表中没有留下任何记录。不带 WHERE 子句的 DELETE 查询等同于 TRUNCATE 语句。


var qry ="TRUNCATE employee;";
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();
});

LIMIT 子句

DELETE 查询中的 LIMIT 子句将删除操作限制为指定数字。例如,LIMIT 5 仅删除给定顺序中的前 5 条记录。在这个例子中,我们将使用预安装的世界数据库,以及其中的城市表。


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

var qry ="DELETE FROM city WHERE CountryCode='IND' ORDER BY population LIMIT 5;";
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();
});

输出


OkPacket {
	 fieldCount: 0,
	 affectedRows: 5,
	 insertId: 0,
	 serverStatus: 2,
	 warningCount: 0,
	 message: '',
	 protocol41: true,
	 changedRows: 0
}

最初,City 表有 341 行,其中 IND 为 CountryCode。通过运行上述代码,按人口升序删除了 5 个城市,表中将剩下 336 个城市。您可以通过在运行上述代码之前和之后运行 SELECT COUNT 查询来检查它。


mysql> SELECT COUNT(name) from city WHERE CountryCode='IND';