본문 바로가기
Database

TRUNCATE / DELETE / DROP

by 코딩개발 2021. 8. 31.
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
반응형

'Database' 카테고리의 다른 글

[iBatis/myBatis] SELECT - INSERT를 할 때  (0) 2023.07.31
SQL SELECT 쿼리 실행 순서  (0) 2021.09.02
Database Link  (0) 2021.09.01

댓글