Node.js - MySQL Xóa dữ liệu: Hướng dẫn chi tiết cho người mới bắt đầu

Xin chào, những người học lập trình tiềm năng! Hôm nay, chúng ta sẽ cùng tìm hiểu về Node.js và MySQL, tập trung vào cách xóa dữ liệu khỏi cơ sở dữ liệu. Đừng lo lắng nếu bạn là người mới – tôi sẽ hướng dẫn bạn từng bước với sự kiên nhẫn của một con rùa già. Hãy bắt đầu hành trình của chúng ta!

Node.js - MySQL Delete

Giới thiệu về MySQL DELETE

Trước khi chúng ta bắt đầu xóa dữ liệu một cách tùy tiện, hãy hiểu rõ DELETE thực sự có nghĩa là gì trong ngữ cảnh của cơ sở dữ liệu. Hãy tưởng tượng bạn có một cuốn sổ tay kỹ thuật số (đó là cơ sở dữ liệu của chúng ta) đầy các ghi chú (dữ liệu của chúng ta). Đôi khi, bạn có thể muốn loại bỏ một số ghi chú không còn liên quan. Đó chính là điều mà thao tác DELETE trong MySQL thực hiện.

Thiết lập môi trường

Trước hết, chúng ta cần đảm bảo rằng我们已经安装了 Node.js và mô-đun MySQL. Nếu bạn chưa làm điều đó, hãy tải Node.js từ trang web chính thức và sau đó mở terminal của bạn và chạy lệnh:

npm install mysql

Lệnh này sẽ cài đặt mô-đun MySQL cho Node.js, cho phép chúng ta kết nối và tương tác với cơ sở dữ liệu MySQL của mình.

Kết nối đến MySQL

Trước khi chúng ta có thể xóa bất cứ thứ gì, chúng ta cần thiết lập kết nối đến cơ sở dữ liệu MySQL của mình. Dưới đây là cách chúng ta thực hiện:

const mysql = require('mysql');

const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database_name'
});

connection.connect((err) => {
if (err) {
console.error('Error connecting to the database: ' + err.stack);
return;
}
console.log('Connected to the database.');
});

Trong đoạn mã này, chúng ta đang导入 MySQL module và tạo kết nối đến cơ sở dữ liệu của chúng ta. Thay thế 'your_username', 'your_password', và 'your_database_name' bằng thông tin thực tế của MySQL của bạn.

Xóa dữ liệu đơn giản

Bây giờ chúng ta đã kết nối, hãy học cách thực hiện một thao tác xóa đơn giản. Hãy tưởng tượng chúng ta có một bảng叫做 'students' và chúng ta muốn xóa một học sinh tên là 'John Doe'.

const deleteQuery = "DELETE FROM students WHERE name = 'John Doe'";

connection.query(deleteQuery, (err, result) => {
if (err) throw err;
console.log(`Deleted ${result.affectedRows} row(s)`);
});

Hãy phân tích điều này:

  1. Chúng ta định nghĩa truy vấn xóa của mình dưới dạng một chuỗi. Nó告诉 MySQL để xóa từ bảng 'students' nơi tên là 'John Doe'.
  2. Chúng ta sử dụng phương thức connection.query() để thực thi truy vấn của mình.
  3. Nếu có lỗi, chúng ta ném nó. Nếu không, chúng ta ghi lại số lượng hàng bị ảnh hưởng bởi thao tác xóa của chúng ta.

Lưu ý, truy vấn này sẽ xóa tất cả các hàng có tên là 'John Doe'. Nếu bạn có nhiều John Doe (những người không may), họ đều sẽ bị xóa!

Sử dụng câu lệnh LIMIT

Đôi khi, bạn có thể muốn giới hạn số lượng hàng bạn đang xóa. Đây là lúc câu lệnh LIMIT trở nên hữu ích. Hãy tưởng tượng chúng ta muốn xóa chỉ một bản ghi 'John Doe':

const limitedDeleteQuery = "DELETE FROM students WHERE name = 'John Doe' LIMIT 1";

connection.query(limitedDeleteQuery, (err, result) => {
if (err) throw err;
console.log(`Deleted ${result.affectedRows} row(s)`);
});

Truy vấn này tương tự như truy vấn trước của chúng ta, nhưng chúng ta đã thêm LIMIT 1 ở cuối. Điều này đảm bảo rằng chỉ một hàng (hàng đầu tiên khớp) sẽ bị xóa.

Xóa dựa trên nhiều điều kiện

Trong các tình huống thực tế, bạn thường cần xóa dựa trên nhiều điều kiện. Hãy tưởng tượng chúng ta muốn xóa tất cả học sinh tên là 'John Doe' và cũng trên 20 tuổi:

const multiConditionDelete = "DELETE FROM students WHERE name = 'John Doe' AND age > 20";

connection.query(multiConditionDelete, (err, result) => {
if (err) throw err;
console.log(`Deleted ${result.affectedRows} row(s)`);
});

Tại đây, chúng ta sử dụng toán tử AND để kết hợp hai điều kiện. Truy vấn này sẽ chỉ xóa các bản ghi thỏa mãn cả hai điều kiện.

Sử dụng biến trong truy vấn DELETE

Đến nay, chúng ta đã mã hóa các giá trị trực tiếp vào chuỗi truy vấn. Nhưng nếu chúng ta muốn làm cho truy vấn của mình linh hoạt hơn? Chúng ta có thể sử dụng các biến:

const name = 'John Doe';
const age = 20;

const variableDelete = "DELETE FROM students WHERE name = ? AND age > ?";

connection.query(variableDelete, [name, age], (err, result) => {
if (err) throw err;
console.log(`Deleted ${result.affectedRows} row(s)`);
});

Trong ví dụ này:

  1. Chúng ta định nghĩa các biến riêng lẻ.
  2. Trong chuỗi truy vấn của mình, chúng ta sử dụng ? làm placeholder cho các biến của mình.
  3. Chúng ta truyền một mảng các biến làm đối số thứ hai cho connection.query().

Phương pháp này giúp ngăn chặn các cuộc tấn công SQL injection và làm cho mã của chúng ta dễ đọc và duy trì hơn.

Xóa tất cả các bản ghi từ một bảng

Đôi khi, bạn có thể muốn xóa tất cả các bản ghi từ một bảng. Hãy rất cẩn thận với thao tác này, vì nó không thể hoàn tác!

const deleteAllQuery = "DELETE FROM students";

connection.query(deleteAllQuery, (err, result) => {
if (err) throw err;
console.log(`Deleted ${result.affectedRows} row(s)`);
});

Truy vấn này sẽ xóa tất cả các hàng từ bảng 'students'. Sử dụng nó một cách khôn ngoan!

Kết luận

Chúc mừng! Bạn vừa học được основы удаления данных из базы данных MySQL с использованием Node.js. Nhớ rằng, với quyền lực lớn đi kèm với trách nhiệm lớn. Luôn kiểm tra lại truy vấn DELETE của bạn trước khi chạy chúng, đặc biệt là trong môi trường sản xuất.

Dưới đây là tóm tắt nhanh về các phương pháp chúng ta đã bao gồm:

Phương pháp Mô tả
Xóa đơn giản Xóa tất cả các hàng khớp với một điều kiện
Xóa với LIMIT Xóa một số lượng hàng określona
Xóa với nhiều điều kiện Xóa các hàng thỏa mãn nhiều điều kiện
Xóa với biến Sử dụng các biến cho các truy vấn linh hoạt và an toàn
Xóa tất cả các bản ghi Xóa tất cả các hàng từ một bảng

Thực hành các phương pháp này, thử nghiệm với dữ liệu của riêng bạn, và sớm bạn sẽ trở thành chuyên gia xóa dữ liệu MySQL! Nhớ rằng, học lập trình giống như học骑自行车 – ban đầu có thể trông不稳定, nhưng với sự练习, bạn sẽ sớm điềm tĩnh! Chúc bạn may mắn với mã code!

Credits: Image by storyset