Node.js - MySQL 데이터 삭제: 초보자를 위한 종합 가이드
안녕하세요, 꿈을 가진 프로그래머 여러분! 오늘 우리는 Node.js와 MySQL의 세계로 접어들어, 데이터베이스에서 데이터를 삭제하는 방법에 대해 배우겠습니다. 초보자이시라면 걱정하지 마세요 - 여러분을 여유롭게 안내해 드리겠습니다. 여러분의 여정을 시작해보겠습니다!
MySQL DELETE 소개
데이터를 마구마구 지우기 전에, DELETE가 데이터베이스의 맥락에서 무엇을 의미하는지 이해해 보겠습니다. 디지털 노트북(데이터베이스)에 다양한 노트(데이터)가 가득 차 있다고 상상해 보세요. 가끔은 더 이상 필요하지 않은 노트를 지우고 싶을 때가 있습니다. 이것이 MySQL에서 DELETE 연산이 하는 일입니다.
환경 설정
먼저, Node.js와 MySQL 모듈이 설치되어 있는지 확인해야 합니다. 아직 설치하지 않았다면, 공식 웹사이트에서 Node.js를 설치한 후 터미널을 열고 다음 명령어를 실행하세요:
npm install mysql
이 명령어는 MySQL 모듈을 Node.js에 설치하여 데이터베이스와 상호작용할 수 있게 합니다.
MySQL에 연결
아무것도 지우기 전에, MySQL 데이터베이스에 연결을 설정해야 합니다. 다음과 같이 하세요:
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('데이터베이스에 연결하는 중 오류 발생: ' + err.stack);
return;
}
console.log('데이터베이스에 연결되었습니다.');
});
이 코드 조각에서 우리는 MySQL 모듈을 임포트하고 데이터베이스에 연결을 생성하고 있습니다. 'your_username', 'your_password', 'your_database_name'을 실제 MySQL 자격증명으로 대체하세요.
간단한 DELETE
이제 연결이 설정되었으므로, 간단한 DELETE 연산을 수행해 보겠습니다. 가정해 보겠습니다. 'students' 테이블에 'John Doe'라는 학생을 지우고 싶을 때입니다.
const deleteQuery = "DELETE FROM students WHERE name = 'John Doe'";
connection.query(deleteQuery, (err, result) => {
if (err) throw err;
console.log(`${result.affectedRows} row(s)이(가) 지워졌습니다.`);
});
이를 해부해 보겠습니다:
- 우리는 DELETE 쿼리를 문자열로 정의합니다. 이 쿼리는 MySQL에 'students' 테이블에서 이름이 'John Doe'인 레코드를 지우도록 지시합니다.
-
connection.query()
메서드를 사용하여 우리의 쿼리를 실행합니다. - 오류가 발생하면 던집니다. 그렇지 않으면, 우리의 지우기 연산에 영향을 미친 행의 수를 로그합니다.
이 쿼리는 이름이 'John Doe'인 모든 행을 지울 것입니다. 여러 명의 'John Doe'가 있다면(불쌍한 사람들), 그들 모두가 지워질 것입니다!
LIMIT 절 사용
occasionally, you might want to limit the number of rows you're deleting. This is where the LIMIT clause comes in handy. Let's say we want to delete only one 'John Doe' record:
const limitedDeleteQuery = "DELETE FROM students WHERE name = 'John Doe' LIMIT 1";
connection.query(limitedDeleteQuery, (err, result) => {
if (err) throw err;
console.log(`${result.affectedRows} row(s)이(가) 지워졌습니다.`);
});
이 쿼리는 우리의 이전 쿼리와 유사하지만, 마지막에 LIMIT 1
을 추가했습니다. 이렇게 하면 오직 하나의 행(첫 번째 일치하는 행)만 지워집니다.
복수 조건을 기반으로 지우기
현실 세계의 상황에서는 종종 여러 조건을 기반으로 데이터를 지우어야 합니다. 예를 들어, 'John Doe'라는 이름의 모든 학생 중 20세 이상인 학생을 지우고 싶다면:
const multiConditionDelete = "DELETE FROM students WHERE name = 'John Doe' AND age > 20";
connection.query(multiConditionDelete, (err, result) => {
if (err) throw err;
console.log(`${result.affectedRows} row(s)이(가) 지워졌습니다.`);
});
여기서 우리는 AND 연산자를 사용하여 두 조건을 결합하고 있습니다. 이 쿼리는 두 조건을 모두 만족하는 레코드만 지울 것입니다.
변수를 사용한 DELETE 쿼리
지금까지 우리는 값을 직접 쿼리 문자열에 codding 해 왔습니다. 하지만 더 유연한 쿼리를 만들고 싶다면 변수를 사용할 수 있습니다:
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(`${result.affectedRows} row(s)이(가) 지워졌습니다.`);
});
이 예제에서:
- 우리는 변수를 별도로 정의합니다.
- 쿼리 문자열에서
?
를 플레이스홀더로 사용합니다. -
connection.query()
에 두 번째 인자로 변수 배열을 전달합니다.
이 방법은 SQL 인젝션 공격을 방지하고 코드가 더 읽기 쉽고 유지보수하기 쉽게 만듭니다.
테이블에서 모든 레코드 지우기
occasionally, you might want to delete all records from a table. Be very careful with this operation, as it can't be undone!
const deleteAllQuery = "DELETE FROM students";
connection.query(deleteAllQuery, (err, result) => {
if (err) throw err;
console.log(`${result.affectedRows} row(s)이(가) 지워졌습니다.`);
});
이 쿼리는 'students' 테이블의 모든 행을 지울 것입니다. 이를 신중하게 사용하세요!
결론
축하합니다! 지금 شما는 Node.js를 사용하여 MySQL 데이터베이스에서 데이터를 지우는 기초를 배웠습니다. 강력한 권한은 큰 책임을 동반합니다. 특히 프로덕션 환경에서 DELETE 쿼리를 실행하기 전에 항상 두 번 확인하세요.
이번에 다루었던 방법의 요약입니다:
방법 | 설명 |
---|---|
간단한 DELETE | 모든 일치하는 행을 지웁니다 |
LIMIT을 사용한 DELETE | 지정된 수의 행을 지웁니다 |
여러 조건을 기반으로 한 DELETE | 여러 조건을 만족하는 행을 지웁니다 |
변수를 사용한 DELETE | 유연하고 안전한 쿼리를 만듭니다 |
모든 레코드 지우기 | 테이블의 모든 행을 지웁니다 |
이 방법들을 연습하고, 자신의 데이터로 실험해 보세요. 곧 MySQL DELETE 마스터가 될 것입니다! 코드를 배우는 것은 자전거 타는 것과 같습니다 -처음에는 흔들릴 수 있지만, 연습하면 곧 자유자재로 탈 수 있을 것입니다. 즐겁게 코딩하세요!
Credits: Image by storyset