본문 바로가기
Database

오라클 DROP TABLE로 테이블 삭제하기

by 굿센스굿 2024. 12. 3.
반응형


DROP TABLE 명령은 오라클 데이터베이스에서 테이블을 삭제할 때 사용하는 SQL 명령어입니다. 이 명령은 테이블의 모든 데이터와 테이블 자체를 영구적으로 제거합니다. 테이블 삭제 작업은 데이터베이스 구조를 변경하므로 주의가 필요하며, 삭제 후 복구가 어렵습니다. 이번 글에서는 DROP TABLE 명령의 특징, 사용법, 주의사항과 함께 실제 사용 예제를 알아보겠습니다.


1. DROP TABLE의 기본 사용법

DROP TABLE의 기본 구문은 다음과 같습니다:

DROP TABLE 테이블명 [CASCADE CONSTRAINTS];
  • 테이블명: 삭제할 테이블의 이름을 지정합니다.
  • CASCADE CONSTRAINTS (옵션):
    • 테이블이 다른 테이블과 외래 키(Foreign Key)로 연결된 경우, 참조 제약 조건을 함께 삭제합니다.

기본 예제:

-- employees 테이블 삭제
DROP TABLE employees;

제약 조건이 있는 테이블 삭제 예제:

-- CASCADE CONSTRAINTS를 사용하여 참조 제약 조건도 함께 삭제
DROP TABLE employees CASCADE CONSTRAINTS;

2. DROP TABLE 사용 시 주의사항

  1. 데이터 및 테이블 복구 불가:
    • DROP TABLE 명령을 실행하면 테이블과 데이터가 영구적으로 삭제되며, Flashback 기능을 사용하지 않는 이상 복구가 불가능합니다.
    • 삭제 전에 데이터를 백업하거나, CREATE TABLE AS SELECT로 복사본을 만드는 것이 좋습니다.
  2. 테이블과 연관된 객체 삭제:
    • 테이블을 삭제하면 해당 테이블과 연관된 인덱스, 트리거, 제약 조건 등도 함께 삭제됩니다.
  3. 외래 키 참조 문제:
    • 삭제하려는 테이블이 다른 테이블의 외래 키로 참조되고 있다면, CASCADE CONSTRAINTS 옵션을 사용해야 삭제가 가능합니다.
  4. DROP TABLE 권한 필요:
    • 테이블을 삭제하려면 사용자가 해당 테이블에 대한 DROP 권한을 가지고 있어야 합니다.

3. 실전 예제

(1) 기본 테이블 삭제

-- simple_orders 테이블 삭제
DROP TABLE simple_orders;

(2) 제약 조건을 포함한 테이블 삭제

-- customers 테이블과 관련된 모든 제약 조건 함께 삭제
DROP TABLE customers CASCADE CONSTRAINTS;

(3) 특정 사용자 소유의 테이블 삭제

-- 다른 사용자가 소유한 테이블 삭제 (권한 필요)
DROP TABLE hr.employees;

4. DROP TABLE과 관련된 기능

(1) 테이블 삭제 후 Flashback 복구

오라클에서 RECYCLE BIN 기능이 활성화되어 있다면, 테이블 삭제 후 복구가 가능합니다.

-- 테이블 삭제
DROP TABLE test_table;

-- 삭제된 테이블 복구
FLASHBACK TABLE test_table TO BEFORE DROP;

RECYCLE BIN이 활성화되어 있지 않다면 복구가 불가능하니 주의해야 합니다.

(2) PURGE 옵션 사용

PURGE 옵션을 사용하면 삭제된 테이블이 RECYCLE BIN에 들어가지 않고 즉시 영구 삭제됩니다.

DROP TABLE test_table PURGE;

5. DROP TABLE 실행 전 체크리스트

  1. 테이블 참조 확인:
    • 다른 테이블에서 참조 중인 경우, CASCADE CONSTRAINTS를 포함해야 삭제가 가능합니다.
    • 참조 여부 확인:
      SELECT * 
      FROM user_constraints
      WHERE r_constraint_name = (
          SELECT constraint_name
          FROM user_constraints
          WHERE table_name = '테이블명'
      );
      
  2. 데이터 백업:
    • 삭제 전에 데이터를 백업하거나 다른 테이블로 복사하는 것이 좋습니다.
    CREATE TABLE backup_table AS SELECT * FROM original_table;
    
  3. 삭제 권한 확인:
    • 사용자가 테이블 삭제 권한을 보유하고 있는지 확인합니다.

6. DROP TABLE의 대안

(1) TRUNCATE TABLE

TRUNCATE TABLE은 테이블의 모든 데이터를 삭제하지만, 테이블 구조는 유지합니다. 테이블을 완전히 삭제할 필요가 없을 때 유용합니다.

TRUNCATE TABLE employees;

(2) 테이블 이름 변경

테이블을 삭제하기 전에 이름을 변경하여 보존할 수 있습니다.

RENAME old_table TO backup_table;

결론

DROP TABLE 명령은 데이터베이스에서 테이블을 영구적으로 삭제하는 강력한 명령입니다. 테이블 삭제는 데이터베이스 구조를 변경하는 작업이므로 반드시 신중하게 실행해야 합니다. 위에서 소개한 주의사항과 예제를 참고하여 테이블 삭제 작업을 안전하게 수행하세요.

반응형