Node.js - MySQL Delete

Trong số các thao tác CRUD được thực hiện với cơ sở dữ liệu MySQL, truy vấn DELETE giúp xóa một hoặc nhiều hàng khỏi một bảng. Trong chương này, chúng tôi sẽ trình bày cách gọi câu lệnh DELETE của MySQL trong một ứng dụng Node.js.

Câu lệnh DELETE cơ bản có cú pháp như sau −

DELETE FROM table_name
WHERE condition;

Mặc dù mệnh đề WHERE là tùy chọn, nhưng hầu hết nó đều được sử dụng, nếu không thì nó sẽ xóa tất cả các hàng trong bảng.

Simple DELETE

Trong đoạn mã Node.js dưới đây, một chuỗi truy vấn DELETE được truyền vào phương thức mysql.query(). Chương trình sẽ xóa tất cả các hồ sơ nhân viên có độ tuổi lớn hơn 25.

Example

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

Output

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

Bỏ câu lệnh WHERE khỏi chuỗi truy vấn trong đoạn mã trên.

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

Bây giờ hãy mở client dòng lệnh và chạy truy vấn SELECT.

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

Bạn có thể thấy rằng không còn bản ghi nào trong bảng. Câu truy vấn DELETE mà không có điều kiện WHERE tương đương với câu lệnh 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 clause

Câu lệnh LIMIT trong truy vấn DELETE giới hạn thao tác xóa chỉ với một số lượng nhất định. Ví dụ, LIMIT 5 chỉ xóa 5 bản ghi đầu tiên trong thứ tự đã cho. Trong ví dụ này, chúng ta sẽ sử dụng cơ sở dữ liệu world đã được cài đặt sẵn và bảng city trong đó.

Example

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

Output

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

Ban đầu, bảng City có 341 hàng với IND là CountryCode. Với 5 thành phố được xóa theo thứ tự dân số tăng dần bằng cách chạy đoạn mã trên, sẽ còn lại 336 thành phố trong bảng. Bạn có thể kiểm tra điều này bằng cách chạy truy vấn SELECT COUNT trước và sau khi chạy đoạn mã trên.

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