반응형
오늘은 SQL에서 대표적으로 사용되는 TRUNCATE, DROP, DELETE 명령어에 대해서 자세히 알아볼꺼에요.
TRUNCATE
TRUNCATE TABLE 테이블명
특징
TRUNCATE는 개별적으로 행을 삭제할 수 없습니다, 테이블 내에 존재하는 모든 행을 삭제합니다.
- TRUNCATE는 DDL(데이터 정의 언어) 명령입니다.
- TRUNCATE는 테이블 잠금을 사용하여 실행되지만, 각 행은 잠기지 않습니다.
- TRUNCATE와 WHERE 절을 함께 사용할 수 없습니다.(개별적으로 행 삭제 불가능)
- TRUNCATE는 테이블에서 모든 행을 제거합니다.
- 트랜잭션 로그에 한 번만 기록되므로 DELETE보다 성능 면에서 더 빠릅니다.
- 인덱싱 된 VIEW(뷰)와 함께 사용할 수 없습니다.
- 테이블에서 TRUNCATE TABLE 명령어를 사용하려면 테이블에 대한 ALTER 권한이 필요합니다.
- ROLLBACK(실행 취소) 불가능합니다.
- 테이블의 용량이 초기화됩니다.
DROP
DROP TABLE 테이블명
특징
DROP은 테이블을 삭제시키며 테이블과 관련된 정의(관계, 인덱스, 트리거, 제약조건 등)을 제거합니다.
- DROP은 DDL(데이터 정의 언어) 명령입니다.
- DROP 명령은 데이터베이스에서 테이블을 제거합니다.
- 테이블의 행, 인덱스 및 권한도 제거됩니다.
- 테이블의 행이 제거될때, DML(데이터 조작 명령어) 트리거가 실행되지 않습니다.
- ROLLBACK(실행 취소) 불가능합니다.
DELETE
DELETE FROM 테이블명 WHERE 조건
특징
DELETE는 테이블에 존재하는 모든 행을 삭제시키며 WHERE절을 통해 개별적으로 행을 삭제할 수 있습니다.
- DELETE는 DML(데이터 조작 언어) 명령입니다.
- DELETE는 행 잠금을 사용하여 실행됩니다.
- DELETE는 WHERE 절과 함께 사용하여 특정 행을 삭제할 수 있습니다.
- DELETE는 삭제된 각 행에 대해 트랜잭션 로그를 기록합니다. 따라서 TRUNCATE보다 느립니다.
- DELETE 명령어를 사용하려면 테이블에 대한 DELETE 권한이 필요합니다.
- 인덱싱 된 VIEW(뷰)와 함께 사용할 수 있습니다.
- TRUNCATE보다 더 많은 트랜잭션 공간을 사용합니다.
- ROLLBACK(실행 취소)을 할 수 있습니다.
- 테이블의 용량은 감소하지 않습니다.
반응형
'SQL' 카테고리의 다른 글
[PG] PostgresQL 기초부터 공부하기1 (1) | 2023.11.01 |
---|---|
[SQL] Subquery 이해하기 (0) | 2023.09.06 |
SQL쿼리 작성 기초 및 최적화 (0) | 2023.01.16 |
DB, MySQL (0) | 2022.11.30 |
댓글