Node.js - MySQL 갱신

안녕하세요, 미래의 코딩 슈퍼스타! 오늘 우리는 Node.js와 MySQL 갱신의 흥미로운 세상으로 뛰어들어 보겠습니다. 초보자이시라도 걱정 마세요 - 이 모험을 안내해 드릴 친절한 안내자가 되겠습니다. 이 튜토리얼의 끝을 맺을 때쯤에는 프로처럼 데이터베이스를 갱신할 수 있을 것입니다!

Node.js - MySQL Update

기본 개념 이해

코드로 뛰어들기 전에 우리가 무엇을 하고 있는지 이야기해 보겠습니다. MySQL에서 "갱신"이라는 말은 데이터베이스에 있는 기존 데이터를 변경하는 것을 의미합니다. 문서를 편집하는 것과 비슷하지만, 워드 파일 대신 정보로 가득 찬 데이터베이스를 작업하는 것입니다.

간단한 갱신

먼저 간단한 갱신부터 해 보겠습니다. 당신의 좋아하는 책들에 대한 데이터베이스가 있다고 가정해 봅시다. 그 중 하나의 평점을 변경하고 싶다면 어떻게 할까요?

이렇게 할 수 있습니다:

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('데이터베이스에 연결되었습니다!');

// 이제 갱신 쿼리를 작성해 보겠습니다
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 명령어를 사용하여 'The Great Gatsby'라는 제목의 책의 rating을 5로 변경합니다.
  3. connection.query()를 사용하여 쿼리를 실행합니다.
  4. 성공하면, 우리의 갱신이 영향을 미친 행의 수를 로그합니다.

UPDATE 문의 WHERE 절을 항상 확인하세요. WHERE 절이 없다면, 실수로 테이블의 모든 레코드를 갱신할 수 있습니다!

준비 문장을 사용한 갱신

이제 우리의 게임을 한 단계 업그레이드해 보겠습니다. 준비 문장(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('데이터베이스에 연결되었습니다!');

// 우리의 준비 문장
let sql = "UPDATE books SET rating = ? WHERE title = ?";
let values = [4, 'To Kill a Mockingbird'];

// 준비 문장을 실행해 보겠습니다
connection.query(sql, values, (err, result) => {
if (err) throw err;
console.log(result.affectedRows + " record(s) updated");
});
});

이 예제에서:

  1. 우리는 값을 갱신할 때 사용할 플레이스홀더(?)를 포함한 준비 문장을 작성합니다.
  2. 이 값을 배열로 제공합니다.
  3. MySQL이 이 값을 적절히 이스케이프하여 SQL 인젝션 공격을 방지합니다.

준비 문장은 마드립스 게임을 생각하면 됩니다 - 먼저 구조를 만들고 나중에 빈칸을 채우는 것입니다!

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('데이터베이스에 연결되었습니다!');

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. books 테이블을 authors 테이블과 author_id 필드를 사용하여 JOIN합니다.
  2. 저자의 국적이 'British'인 모든 책의 가격을 10% 인상합니다.
  3. 이 갱신은 관련 테이블들 간의 정보를 기반으로 한 번에 여러 행을 업데이트합니다!

이를 두 테이블 간의 協調한 춤으로 생각하면 됩니다 - 관련 정보를 기반으로 정보를 갱신합니다.

갱신 방법 비교

우리의 방법을 편리한 표로 요약해 보겠습니다:

방법 장점 단점 가장 사용할 때
간단한 갱신 이해하기 쉽고 구현하기 쉬움 SQL 인젝션에 취약할 수 있음 빠른, 단회적인 갱신을 할 때
준비 문장 SQL 인젝션에 안전, 재사용 가능 설정이 약간 복잡 반복적인 갱신을 할 때
UPDATE JOIN 여러 테이블의 정보를 기반으로 갱신 쿼리 구조가 복잡 다른 테이블의 정보를 기반으로 데이터를 갱신할 때

결론

이제 우리는 Node.js와 MySQL 갱신의 세상을 여행했네요. 간단한 변경에서 복잡한 다 테이블 갱신까지 다양한 기술을 배웠습니다. 강력한 기능을 가지고 있지만, WHERE 절을 항상 확인하고 사용자 입력을 처리할 때는 준비 문장을 사용하세요.

이 기술들을 연습하고, 계속 배우며, 무엇보다도 즐겁게 코딩하세요! 다음 번에 다시 만날 때까지, 쿼리가 빠르고 데이터베이스에 버그가 없기를 바랍니다!

Credits: Image by storyset