Node.js - MySQL Cập nhật
Xin chào bạn, ngôi sao lập trình tương lai! Hôm nay, chúng ta sẽ nhảy vào thế giới đầy thú vị của Node.js và cập nhật MySQL. Đừng lo lắng nếu bạn mới bắt đầu - tôi sẽ là người bạn thân thiện dẫn đường cho bạn trong cuộc phiêu lưu này. Cuối cùng của bài hướng dẫn này, bạn sẽ cập nhật cơ sở dữ liệu như một chuyên gia!
Hiểu về Cơ bản
Trước khi chúng ta nhảy vào mã, hãy trò chuyện về điều chúng ta thực sự đang làm. Khi chúng ta nói về "cập nhật" trong MySQL, chúng ta thực chất đang thay đổi dữ liệu hiện có trong cơ sở dữ liệu của mình. Nó giống như chỉnh sửa một tài liệu, nhưng thay vì một tệp Word, chúng ta đang làm việc với một cơ sở dữ liệu đầy thông tin.
Cập nhật Đơn giản
Hãy bắt đầu với một cập nhật đơn giản. Hãy tưởng tượng bạn có một cơ sở dữ liệu về sách yêu thích của mình, và bạn muốn thay đổi đánh giá của một trong số chúng.
Dưới đây là cách chúng ta có thể làm điều đó:
const mysql = require('mysql');
// Đầu tiên, chúng ta tạo một kết nối đến cơ sở dữ liệu của mình
const connection = mysql.createConnection({
host: 'localhost',
user: 'yourusername',
password: 'yourpassword',
database: 'yourdatabase'
});
// Bây giờ, hãy kết nối!
connection.connect((err) => {
if (err) throw err;
console.log('Kết nối đến cơ sở dữ liệu thành công!');
// Đây là truy vấn UPDATE của chúng ta
let sql = "UPDATE books SET rating = 5 WHERE title = 'The Great Gatsby'";
// Hãy thực thi truy vấn
connection.query(sql, (err, result) => {
if (err) throw err;
console.log(result.affectedRows + " bản ghi được cập nhật");
});
});
Hãy phân tích điều này:
- Chúng ta bắt đầu bằng cách yêu cầu mô-đun MySQL và tạo một kết nối đến cơ sở dữ liệu của mình.
- Chúng ta sử dụng lệnh
UPDATE
SQL để thay đổirating
thành 5 cho sách có tiêu đề 'The Great Gatsby'. - Chúng ta thực thi truy vấn bằng cách sử dụng
connection.query()
. - Nếu thành công, chúng ta ghi lại số lượng bản ghi bị ảnh hưởng bởi cập nhật của chúng ta.
Lưu ý, hãy luôn kiểm tra lại mệnh đề WHERE
trong câu lệnh UPDATE
. Nếu không có nó, bạn có thể vô tình cập nhật mọi bản ghi trong bảng của mình!
Cập nhật với Câu lệnh Chuẩn bị
Bây giờ, hãy nâng cấp trò chơi của chúng ta với các câu lệnh chuẩn bị. Đây là những mẫu có thể tái sử dụng cho các truy vấn SQL của chúng ta, giúp mã của chúng ta an toàn và hiệu quả hơn.
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'yourusername',
password: 'yourpassword',
database: 'yourdatabase'
});
connection.connect((err) => {
if (err) throw err;
console.log('Kết nối đến cơ sở dữ liệu thành công!');
// Câu lệnh chuẩn bị của chúng ta
let sql = "UPDATE books SET rating = ? WHERE title = ?";
let values = [4, 'To Kill a Mockingbird'];
// Thực thi câu lệnh chuẩn bị
connection.query(sql, values, (err, result) => {
if (err) throw err;
console.log(result.affectedRows + " bản ghi được cập nhật");
});
});
Trong ví dụ này:
- Chúng ta tạo một câu lệnh chuẩn bị với các placeholder (
?
) cho các giá trị chúng ta muốn cập nhật. - Chúng ta cung cấp các giá trị này trong một mảng.
- MySQL đảm nhận việc escape các giá trị này, bảo vệ chúng ta khỏi các cuộc tấn công SQL injection.
Hãy nghĩ về các câu lệnh chuẩn bị như một trò chơi Mad Libs - chúng ta tạo cấu trúc trước, sau đó điền vào các khoảng trống sau!
Cập nhật với JOIN
Đôi khi, chúng ta cần cập nhật dữ liệu trong một bảng dựa trên thông tin từ bảng khác. Đó là khi cập nhật JOIN trở nên hữu ích. Hãy tưởng tượng chúng ta muốn cập nhật giá của sách dựa trên quốc tịch của tác giả.
const mysql = require('mysql');
const connection = mysql.createConnection({
host: 'localhost',
user: 'yourusername',
password: 'yourpassword',
database: 'yourdatabase'
});
connection.connect((err) => {
if (err) throw err;
console.log('Kết nối đến cơ sở dữ liệu thành công!');
let sql = `
UPDATE books b
JOIN authors a ON b.author_id = a.id
SET b.price = b.price * 1.1
WHERE a.nationality = 'British'
`;
connection.query(sql, (err, result) => {
if (err) throw err;
console.log(result.affectedRows + " bản ghi được cập nhật");
});
});
Dưới đây là những gì đang xảy ra:
- Chúng ta JOIN bảng
books
với bảngauthors
sử dụng trườngauthor_id
. - Chúng ta tăng giá lên 10% (nhân với 1.1) cho tất cả các sách mà tác giả có quốc tịch là 'British'.
- Cập nhật này ảnh hưởng đến nhiều bản ghi trên các bảng liên quan trong một lần!
Hãy nghĩ về điều này như một điệu nhảy đồng bộ giữa hai bảng - chúng di chuyển cùng nhau để cập nhật thông tin chúng ta cần.
So sánh các Phương pháp Cập nhật
Hãy tóm tắt các phương pháp của chúng ta trong một bảng tiện lợi:
Phương pháp | Ưu điểm | Nhược điểm | Tốt nhất sử dụng khi |
---|---|---|---|
Cập nhật Đơn giản | Dễ hiểu và triển khai | Nhiễu SQL injection nếu không cẩn thận | Thực hiện cập nhật nhanh, một lần |
Câu lệnh Chuẩn bị | An toàn hơn chống SQL injection, có thể tái sử dụng | somewhat complex to set up | Thực hiện cập nhật lặp lại với các giá trị khác nhau |
Cập nhật JOIN | Có thể cập nhật dựa trên dữ liệu từ nhiều bảng | Cấu trúc truy vấn phức tạp hơn | Cần cập nhật dữ liệu dựa trên thông tin liên quan từ các bảng khác |
Kết luận
Và thế là bạn đã có nó, các bạn! Chúng ta đã cùng nhau hành trình qua vùng đất của Node.js và cập nhật MySQL, từ các thay đổi đơn giản đến các thao tác đa bảng phức tạp. 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 mệnh đề WHERE
và sử dụng câu lệnh chuẩn bị khi làm việc với đầu vào của người dùng.
Thực hành các kỹ thuật này, và sớm bạn sẽ cập nhật cơ sở dữ liệu nhanh hơn bạn có thể nói "SQL"! Tiếp tục lập trình, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ với nó. Đến gặp lại bạn, chúc các truy vấn của bạn nhanh chóng và cơ sở dữ liệu của bạn không có lỗi!
Credits: Image by storyset