• 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';
廣告