Node.js - MySQL 갱신
안녕하세요, 미래의 코딩 슈퍼스타! 오늘 우리는 Node.js와 MySQL 갱신의 흥미로운 세상으로 뛰어들어 보겠습니다. 초보자이시라도 걱정 마세요 - 이 모험을 안내해 드릴 친절한 안내자가 되겠습니다. 이 튜토리얼의 끝을 맺을 때쯤에는 프로처럼 데이터베이스를 갱신할 수 있을 것입니다!
기본 개념 이해
코드로 뛰어들기 전에 우리가 무엇을 하고 있는지 이야기해 보겠습니다. 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");
});
});
이를 나누어 설명하자면:
- MySQL 모듈을 요청하고 데이터베이스에 대한 연결을 생성합니다.
-
UPDATE
SQL 명령어를 사용하여 'The Great Gatsby'라는 제목의 책의rating
을 5로 변경합니다. -
connection.query()
를 사용하여 쿼리를 실행합니다. - 성공하면, 우리의 갱신이 영향을 미친 행의 수를 로그합니다.
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");
});
});
이 예제에서:
- 우리는 값을 갱신할 때 사용할 플레이스홀더(
?
)를 포함한 준비 문장을 작성합니다. - 이 값을 배열로 제공합니다.
- 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");
});
});
이를 나누어 설명하자면:
-
books
테이블을authors
테이블과author_id
필드를 사용하여 JOIN합니다. - 저자의 국적이 'British'인 모든 책의 가격을 10% 인상합니다.
- 이 갱신은 관련 테이블들 간의 정보를 기반으로 한 번에 여러 행을 업데이트합니다!
이를 두 테이블 간의 協調한 춤으로 생각하면 됩니다 - 관련 정보를 기반으로 정보를 갱신합니다.
갱신 방법 비교
우리의 방법을 편리한 표로 요약해 보겠습니다:
방법 | 장점 | 단점 | 가장 사용할 때 |
---|---|---|---|
간단한 갱신 | 이해하기 쉽고 구현하기 쉬움 | SQL 인젝션에 취약할 수 있음 | 빠른, 단회적인 갱신을 할 때 |
준비 문장 | SQL 인젝션에 안전, 재사용 가능 | 설정이 약간 복잡 | 반복적인 갱신을 할 때 |
UPDATE JOIN | 여러 테이블의 정보를 기반으로 갱신 | 쿼리 구조가 복잡 | 다른 테이블의 정보를 기반으로 데이터를 갱신할 때 |
결론
이제 우리는 Node.js와 MySQL 갱신의 세상을 여행했네요. 간단한 변경에서 복잡한 다 테이블 갱신까지 다양한 기술을 배웠습니다. 강력한 기능을 가지고 있지만, WHERE 절을 항상 확인하고 사용자 입력을 처리할 때는 준비 문장을 사용하세요.
이 기술들을 연습하고, 계속 배우며, 무엇보다도 즐겁게 코딩하세요! 다음 번에 다시 만날 때까지, 쿼리가 빠르고 데이터베이스에 버그가 없기를 바랍니다!
Credits: Image by storyset