Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

Node.js로 MySQL 테이블 삭제하기: DROP TABLE 문 활용 가이드

Node.js에서는 DROP TABLE 문을 사용하여 MySQL 데이터베이스에 존재하는 테이블을 삭제할 수 있습니다. 더 이상 사용하지 않는 테이블을 통째로 제거해야 하는 경우가 종종 있는데, 기업 환경에서는 사용하지 않는 테이블을 바로 삭제하기보다 아카이브(보관)하는 것이 안전하다는 점을 참고하세요.

테이블을 삭제할 때는 크게 두 가지 상황을 고려할 수 있습니다.

  • 테이블이 존재하면 삭제하고, 존재하지 않으면 에러 발생
  • 테이블 존재 여부와 관계없이 무조건 삭제 시도

이 글에서는 두 가지 경우를 모두 예제와 함께 살펴보겠습니다.

사전 준비 사항

본격적으로 시작하기 전에 아래 명령어가 실행되어 프로젝트 환경이 준비되어 있어야 합니다.

  • mkdir mysql-test
  • cd mysql-test
  • npm init -y
  • npm install mysql

위 과정은 프로젝트 폴더에 Node.js의 mysql 모듈(의존성)을 설치하는 단계입니다.

테이블 삭제하기

테이블을 삭제하려면 먼저 app.js 파일을 생성한 뒤, 아래 코드를 복사해서 붙여넣고 다음 명령어로 실행합니다.

>> node app.js

예제 1 — 존재하지 않는 테이블 삭제 시도

var mysql = require('mysql');
var con = mysql.createConnection({
    host: "localhost",
    user: "yourusername",
    password: "yourpassword",
    database: "mydb"
});

con.connect(function(err) {
    if (err) throw err;
    // "customers" 테이블 삭제:
    var sql = "DROP TABLE customers";
    con.query(sql, function (err, result) {
        if (err) throw err;
        console.log("Table deleted");
        console.log(result);
    });
});

위 코드는 데이터베이스에 customers라는 이름의 테이블이 없기 때문에 에러를 발생시킵니다. 현재 데이터베이스에는 students라는 테이블만 존재합니다.

출력 결과

Error: ER_BAD_TABLE_ERROR: Unknown table 'bo.customers'

예제 2 — 존재하는 테이블 삭제

var mysql = require('mysql');
var con = mysql.createConnection({
    host: "localhost",
    user: "yourusername",
    password: "yourpassword",
    database: "mydb"
});

con.connect(function(err) {
    if (err) throw err;
    // "students" 테이블 삭제:
    var sql = "DROP TABLE students";
    con.query(sql, function (err, result) {
        if (err) throw err;
        console.log("Table deleted");
        console.log(result);
    });
});

출력 결과

테이블이 실제로 존재하므로 정상적으로 삭제되며, 다음과 같은 결과가 출력됩니다.

Table deleted
OkPacket {
    fieldCount: 0,
    affectedRows: 0,
    insertId: 0,
    serverStatus: 2,
    warningCount: 0,   // 테이블이 존재하는 경우 warningCount = 0
    message: '',
    protocol41: true,
    changedRows: 0
}

테이블이 존재할 때만 삭제하기 (IF EXISTS)

그렇다면 위와 같은 에러 상황은 어떻게 피할 수 있을까요? 해결 방법은 간단합니다. SQL 문에 IF EXISTS 절을 추가하면 됩니다. 이 절을 사용하면 테이블이 존재할 때만 삭제가 수행되고, 존재하지 않아도 에러 대신 경고(warningCount)만 반환됩니다.

아래 코드를 app.js 파일에 붙여넣은 후 실행해 보세요.

>> node app.js

예제

var mysql = require('mysql');
var con = mysql.createConnection({
    host: "localhost",
    user: "yourusername",
    password: "yourpassword",
    database: "mydb"
});

con.connect(function(err) {
    if (err) throw err;
    // "customers" 테이블 삭제 (존재할 경우에만):
    var sql = "DROP TABLE IF EXISTS customers";
    con.query(sql, function (err, result) {
        if (err) throw err;
        console.log("Table deleted");
        console.log(result);
    });
});

출력 결과

Table deleted
OkPacket {
    fieldCount: 0,
    affectedRows: 0,
    insertId: 0,
    serverStatus: 2,
    warningCount: 1,   // 테이블이 존재하지 않으면 warningCount > 0
    message: '',
    protocol41: true,
    changedRows: 0
}

결과 객체의 warningCount 값을 확인하면 테이블이 실제로 삭제되었는지, 아니면 애초에 존재하지 않았는지 판단할 수 있다는 점도 유용하게 기억해 두세요.