나의 개발일지

[SQL] 테이블 삭제 본문

Oracle SQL

[SQL] 테이블 삭제

YoonJuHan 2023. 6. 2. 15:18

DROP TABLE 명령

  1. 테이블의 모든 데이터 및 구조를 삭제하는 명령
    1. 테이블과 연관된 인덱스도 모두 삭제
    2. 테이블과 연관된 뷰와 동의어는 사용불가 상태로 유지
    3. 해당 테이블을 소유하고 있거나 높은 레벨의 권한이 있는 경우 테이블 제거 가능
    4. 자동으로 COMMIT 되므로 ROLLBACK 불가
      1. PURGE 옵션을 사용하지 않은 경우 FLASHBACK 가능
  2. 구문
DROP TABLE table명 [PURGE];

 

RECYCLE BIN (휴지통)

  1. 삭제된 테이블에 대한 휴지통 제공
    1. FLASHBACK 명령문으로 삭제된 테이블을 휴지통으로부터 복원 가능
    2. 실수로 잘못 삭제한 테이블을 쉽고 빠르게 복원
    3. 오라클 10g부터 제공
  2. 고려사항
    1. DROP TABLE 시 PURGE 옵션을 사용한 경우 테이블은 휴지통에 저장되지 않음
    2. 사용자는 휴지통 객체가 존재한다면 언제라도 해당 테이블을 복원 가능

 

  • customers 테이블을 삭제하고 확인
DROP TABLE customers;

DESC customers;

SELECT * FROM tab;

DESC customers;

 

  • FLASHBACK 명령으로 테이블을 복원하고 확인
FLASHBACK TABLE customers TO BEFORE DROP;

DESC customers;

SELECT * FROM tab;

 

  • PURGE 옵션으로 테이블을 영구 삭제한 후 확인
DROP TABLE customers PURGE;

SELECT * FROM tab;

 

TRUNCATE TABLE 문

  1. 테이블에서 모든 행을 제거하고 해당 테이블이 사용하던 저장 공간을 해제하는 DDL 문
    1. TRUNCATE TABLE 문으로 수행한 행 제거 작업은 ROLLBACK 불가
    2. 결과는 DELETE TABLE을 WHERE 절 없이 사용하고 COMMIT 한 것과 동일
  2. 구문
TRUNCATE TABLE table명;

 

  • emp300 테이블을 확인
SELECT * FROM emp300;

 

  • emp300 테이블을 TRUNCATE 한 후 모든 행은 삭제되고 테이블 구조만 남아 있는 것을 확인
TRUNCATE TABLE emp300;

DESC emp300;

SELECT * FROM emp300;

RENAME 명령

  1. 객체 이름 변경 명령
    1. 테이블 또는 뷰, 시퀀스 또는 동의어 등 객체 이름 변경
    2. 이름을 변경할 객체의 소유자가 수행
  2. RENAME 명령문 사용 경우
    1. 테이블의 이름이 지나치게 길거나 저장된 데이터와 연관성이 없는 경우
    2. 테이블의 저장구조를 재구성할 목적
  3. 구문
RENAME old_name TO new_name;

 

  • emp300 테이블의 이름을 dept300 으로 변경하고 확인
RENAME emp300 TO dept300;

DESC emp300;

DESC dept300;

'Oracle SQL' 카테고리의 다른 글

[SQL] 인덱스  (0) 2023.06.02
[SQL] 제약 조건  (0) 2023.06.02
[SQL] 테이블 수정  (0) 2023.06.02
[SQL] 테이블의 생성과 관리  (0) 2023.05.31
[SQL] 데이터베이스 트랜잭션  (0) 2023.05.30
Comments