DELETE, DROP, TRUNCATE의 비교

 

1. DELETE 명령어 사용

 

DELETE 명령어를 사용하여 TABLE의 행을 삭제할 수 있다.

예를 들어 EMP TABLE에서 모든 행을 삭제하는 명령문은 다음과 같다.

 

SQL>DELETE FROM emp;

 

◈DELETE 문을 사용할 때 TABLE이나 CLUSTER에 행이 많으면 행이 삭제될 때마다 많은 SYSTEM 자원이 소모된다.

예를 들어 CPU 시간, REDO LOG 영역, TABLE이나 INDEX에 대한 ROLLBACK SEGMENT 영역 등의 자원이 필요하다.

◈TRIGGER가 걸려있다면 각 행이 삭제될 때 실행된다.

◈이전에 할당되었던 영역은 삭제되어 빈 TABLE이나 CLUSTER에 그대로 남아 있게 된다.

 

 

TRUNCATE 명령문

 

 

 

TRUNCATE 명령문

 

*사용 예

-client_address 테이블의 데이터와 할당된 공간을 삭제하여라.

 

 

 

 

TRUNCATE 명령문

 

*기능

-테이블 구조는 그대로 유지하고, 테이블의 데이터와 할당된 공간만 삭제

-테이블에 생성된 제약조건과 연관된 인덱스, 뷰, 동의어는 유지

 

*DELETE 명령문과 차이

-DELETE 명령문

   。기존 데이터만 삭제하는 명령이며, ROLLBACK 가능

   。WHERE 절을 이용하여 특정 행만 삭제 가능

-TRUNCATE 명령문

   。기존 데이터 삭제뿐 아니라, 물리적인 저장 공간까지 반환

   。DDL 문이므로 ROLLBACK이 불가능

   。WHERE 절을 이용하여 특정 행만 삭제하는 것이 불가능

 

*사용법

TRUNCATE   TABLE   [schema.]  table

 

 

 

테이블 삭제

 

*사용 예

-addr_third 테이블을 삭제하여라.

 

 

 

테이블 삭제

 

*기능

-기존 테이블과 데이터를 모두 삭제

-DROP TABLE 명령문 사용

-삭제된 테이블 칼럼에 대해 생성된 인덱스도 함께 삭제

-삭제된 테이블과 관련된 뷰와 동의어 'invalid' 상태

-삭제할 테이블의 기본 키나 고유 키를 디른 테이블에서 참조하고 있는 경우 삭제 불가능

  。참조하는 테이블(자식 테이블)을 먼저 삭제

  。DROP TABLE 명령문 마지막에 CASCADE CONSTRAINTS 옵션을 사용하여 무결성 제약조건을 동시에 삭제

 

*사용법

DROP    TABLE   [schema.]   table   [cascade constraints]

 

-cascade constraints : 삭제 대상 테이블의 기본 키나 고유 키를 참조하는 무결성 제약조건을 동시에 삭제하기 위한 옵션

 

 

테이블 이름 변경

 

*사용 예

-addr_second 테이블 이름을 client_address로 변경하여라.

 

 

테이블 이름 변경

 

*기능

-RENAME 명령문 사용

   。객체의 이름을 변경하는 DDL 명령문

   。뷰, 시퀀스, 동의어 등과 같은 데이터베이스 객체의 이름 변경 가능

 

*사용법

RENAME   old_table   TO   new_table

 

 

+ Recent posts