Database

TRUNCATE / DELETE / DROP

코딩개발 2021. 8. 31. 17:06
728x90
반응형

 

 구분 테이블 정의  저장공간  작업속도  SQL문 종류 구분 
 TRUNCATE 존재 반납 빠름 DDL
 DELETE 존재 유지 느림  DML 
 DROP 삭제 반납 빠름 DDL

 

TRUNCATE - 테이블의 모든 로우 제거

1. DDL(Data Definition Language)

   - 데이터를 정의하는 언어로서 개체를 만들고 변경, 삭제 (CREATE, ALTER, DROP, TRUNCATE)

 

2. 구문

TRUNCATE TABLE [{database_name.[schema_name]. | schema_name.}]table_name[;]

 

- 테이블 명세만을 남기고 데이터가 존재하던 공간까지 제거(테이블을 최초 생성된 초기상태로 만듬)

- Delete 보다 속도는 더 빠르지만 Rollback 불가능

- 용량이 줄어들고, Index 등도 모두 삭제됨(AUTO_INCREMENT로 지정하여 값이 증가하던 컬럼 초기화)

- 전체 삭제만 가능(삭제 행수 반환X)

- 테이블이 사용했던 Storage중 최초 테이블 생성 시 할당된 Storage만 남기고 Release 처리(저장공간 반납)

(참고) Release 처리 : 테이블이 테이블 스페이스에서 차지하고 있던 저장 공간이 다시 반환 된다는 뜻

 

개념 : 테이블의 데이터를 전부 삭제하고 사용하고 있던 공간을 반납

설명 
 - 해당 테이블의 데이터가 모두 삭제되지만 테이블 자체가 지워지는 것은 아님
 - 해당 테이블에 생성되어 있던 Index도 함께 truncate

사용 : TRUNCATE TABLE lee_Table;

 

 

DELETE

1. DML(Data Mainpulation Language)

   - 데이터 조작 언어로서 데이터를 가공 (SELECT, INSERT, UPDATE,DELETE)

 

2. 구문

[ WITH <common_table_expression> [ ,...n ] ]
DELETE [ TOP ( expression ) [ PERCENT ] ] [ FROM ] { <object> | rowset_function_limited  [ WITH ( <table_hint_limited> [ ...n ] ) ] }
    [ <OUTPUT Clause> ]
    [ FROM <table_source> [ ,...n ] ]
    [ WHERE { <search_condition> | { [ CURRENT OF  { [ GLOBAL ] cursor_name }  | cursor_variable_name } ] } } ]
    [ OPTION ( <Query Hint> [ ,...n ] ) ] [; ]
<object> ::=
{ [ server_name.database_name.schema_name. | database_name. [ schema_name ] .  | schema_name. ] table_or_view_name }

 

- Commit 이전에 Rollback 가능

- Index 삭제 X (AUTO_INCREMENT로 지정하여 값이 증가하던 컬럼이 초기화되지 않음)

- 전체 또는 일부 삭제 가능(삭제 행수를 반환)

- Where 절을 통해 조건 부여 가능

- 저장공간 유지(테이블 용량은 줄어 들지 않음/데이터를 모두 Delete해도 사용했던 Storage는 Release 처리 되지 않음)

- TABLE이나 CLUSTER에 행이 많으면 행이 삭제될 때마다 많은 SYSTEM 자원이 소모 된다.

 

 

DROP - 테이블 구조를 제거

1. DDL(Data Definition Language)

   - 데이터를 정의하는 언어로서 개체를 만들고 변경, 삭제 (CREATE, ALTER, DROP, TRUNCATE)

 

2. 구문

DROP DATABASE { database_name | database_snapshot_name } [ ,...n ] [;]
DROP TABLE [ database_name . [ schema_name ] . | schema_name . ] table_name [ ,...n ] [ ; ]

 

- 테이블 구조 제거

- Rollback 불가능

- 테이블을 사용했던 Storge는 모두 Release 처리

(참고) Release 처리 : 테이블이 테이블 스페이스에서 차지하고 있던 저장 공간이 다시 반환 된다는 뜻

 

개념 : 테이블 자체를 삭제하는 명령어

설명
 - 테이블 자체가 모두 지워지며, 해당 테이블에 생성되어 있던 Index도 삭제됨
 - 오라클 10g부터는 테이블이 삭제되는 것이 아니라 윈도우의 휴지통 개념처럼 잠시 삭제됨 그리고 테이블 이름이 BIN$..로 변경됨

사용 : DROP TABLE lee_table;

 

 

 

참고

https://pointnet.tistory.com/334

https://developer-c.tistory.com/54

https://lee-mandu.tistory.com/476

https://wikidocs.net/4021

https://goddaehee.tistory.com/55

728x90
반응형