• Node.js Video Tutorials

Node.js - MySQL 删除



在对 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 条记录。对于此示例,我们将使用预安装的 world 数据库及其中的 city 表。

示例

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 行,CountryCode 为 IND。通过运行上述代码删除人口按升序排列的前 5 个城市后,表中将剩下 336 个城市。您可以通过在运行上述代码之前和之后运行 SELECT COUNT 查询来检查它。

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