구분 | 테이블 정의 | 저장공간 | 작업속도 | 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
'Database' 카테고리의 다른 글
[iBatis/myBatis] SELECT - INSERT를 할 때 (0) | 2023.07.31 |
---|---|
SQL SELECT 쿼리 실행 순서 (0) | 2021.09.02 |
Database Link (0) | 2021.09.01 |
댓글