Node.js - MySQL Update

Привет, будущая суперзвезда программирования! Сегодня мы окунемся в захватывающий мир обновлений Node.js и MySQL. Не волнуйтесь, если вы новички - я буду вашим доброжелательным проводником в этом приключении. К концу этого руководства вы будете обновлять базы данных как профи!

Node.js - MySQL Update

Понимание основ

Прежде чем мы перейдем к коду, давайте поболтаем о том, что мы на самом деле делаем. Когда мы говорим об "обновлении" в MySQL, мы essentially изменяем существующие данные в нашей базе данных. Это как редактирование документа, но вместо файла Word мы работаем с базой данных, полной информации.

Простое UPDATE

Давайте начнем с простого обновления. Представьте, что у вас есть база данных ваших любимых книг, и вы хотите изменить оценку одной из них.

Вот как мы можем это сделать:

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('Connected to the database!');

// Вот наш UPDATE запрос
let sql = "UPDATE books SET rating = 5 WHERE title = 'The Great Gatsby'";

// Давайте выполним запрос
connection.query(sql, (err, result) => {
if (err) throw err;
console.log(result.affectedRows + " record(s) updated");
});
});

Давайте разберем это:

  1. Мы начинаем с того, что требуем модуль MySQL и создаем соединение с нашей базой данных.
  2. Мы используем команду UPDATE SQL, чтобы изменить rating на 5 для книги с названием 'The Great Gatsby'.
  3. Мы выполняем запрос с помощью connection.query().
  4. Если успешно, мы логируем, сколько строк былоaffected是我们的更新。

Remember, always double-check your WHERE clause in an UPDATE statement. Without it, you might accidentally update every record in your table!

UPDATE с prepared statement

Теперь давайте повысим наш уровень с prepared statements. Это как шаблоны для наших SQL запросов, делающие наш код безопаснее и эффективнее.

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('Connected to the database!');

// Наш prepared statement
let sql = "UPDATE books SET rating = ? WHERE title = ?";
let values = [4, 'To Kill a Mockingbird'];

// Выполнение prepared statement
connection.query(sql, values, (err, result) => {
if (err) throw err;
console.log(result.affectedRows + " record(s) updated");
});
});

В этом примере:

  1. Мы создаем prepared statement с метками-заменителями (?) для значений, которые мы хотим обновить.
  2. Мы предоставляем эти значения в массиве.
  3. MySQL заботится о правильном экранировании этих значений, защищая нас от атак SQL injection.

Представьте prepared statements как игру Mad Libs – мы сначала создаем структуру, а затем заполняем пропуски позже!

UPDATE JOIN

Иногда нам нужно обновить данные в одной таблице на основе информации из другой таблицы. Тогда на помощь приходит UPDATE JOIN. Давайте представим, что мы хотим обновить цены книг в зависимости от национальности их авторов.

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('Connected to the database!');

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 + " record(s) updated");
});
});

Вот что происходит:

  1. Мы JOINаем таблицу books с таблицей authors используя поле author_id.
  2. Мы увеличиваем цену на 10% (умножая на 1.1) для всех книг, где национальность автора 'British'.
  3. Это обновление влияет на несколько строк в связанных таблицах одним махом!

Представьте это как координированный танец между двумя таблицами – они двигаются вместе, чтобы обновить информацию, которая нам нужна.

Сравнение методов UPDATE

Давайте подытожим наши методы в удобной таблице:

Метод Плюсы Минусы Лучше использовать, когда
Простое UPDATE Легко понять и реализовать Уязвимо к SQL injection, если не быть осторожным Делаете быстрые, единичные обновления
Prepared Statement Защищено от SQL injection, можно использовать повторно Немного сложнее настроить Выполняете повторные обновления с разными значениями
UPDATE JOIN Можно обновлять на основе данных из нескольких таблиц Более сложная структура запроса Нужен для обновления данных на основе相关信息 в других таблицах

Заключение

И вот мы добрались до конца, друзья! Мы прошли через мир обновлений Node.js и MySQL, от простых изменений до сложных операций с несколькими таблицами. Помните, с большой властью приходит большая ответственность – всегда проверяйте свои WHERE clauses и используйте prepared statements при работе с вводом пользователя.

Практикуйте эти техники, и скоро вы будете обновлять базы данных быстрее, чем вы можете сказать "SQL"! Продолжайте программировать, продолжайте учиться и, самое главное, получайте удовольствие от этого. До свидания, пусть ваши запросы будут быстрыми, а базы данных без ошибок!

Credits: Image by storyset