SQLD 시험 전 공부해야 할 것2 : DROP, TRUNCATE, DELETE 차이점
시험에 자주 나오는 단골 질문 중 하나인 DROP, TRUNCATE, DELETE의 차이점 및 기능에 대해 알아보도록 하겠습니다!
SQL에서 DROP, TRUNCATE 및 DELETE 문의 주요 차이점은 다음과 같습니다
기능
DROP | TRUNCATE | DELETE |
전체 테이블 또는 데이터베이스를 영구적으로 제거합니다. | 테이블에서 모든 행을 제거하지만 테이블 구조는 유지합니다. | 특정 조건에 따라 테이블에서 특정 행을 제거합니다. |
테이블 정의 자체를 완전히 삭제 | 테이블을 최초 생성된 초기상태로 만듦 | 데이터만 삭제 |
DDL | DDL(일부 DML 성격을 가짐) | DML |
DROP 예시
DROP TABLE employees; -- 인덱스, 트리거 및 제약 조건을 포함하여 전체 "인덱스" 테이블과 관련된 모든 개체를 삭제합니다.
TRUNCATE 예시
TRUNCATE TABLE orders; -- 테이블 구조와 관련 개체(예: 인덱스 및 트리거)를 유지하면서 "주문" 테이블에서 모든 행을 제거합니다.
DELETE 예시
DELETE FROM customers WHERE city = 'London';-- 도시가 런던인 "고객" 테이블에서 모든 행을 제거합니다.
속도
DROP | TRUNCATE | DELETE |
테이블이나 데이터베이스를 삭제하기만 하면 되며 모든 관련 개체(예: 인덱스, 트리거, 제약 조건)도 삭제되므로 가장 빠릅니다. | 테이블에서 모든 행을 제거하고 데이터 페이지의 할당을 해제하기만 하면 테이블 구조가 그대로 유지되므로 DELETE보다 빠릅니다. 연결된 개체는 삭제되지 않습니다. | 한 번에 하나의 행을 삭제하고 각 삭제 작업을 기록하므로 속도가 가장 느립니다. 테이블 구조 및 관련 개체는 영향을 받지 않습니다. |
복구여부
DROP | TRUNCATE | DELETE |
실행을 취소할 수 없으며 데이터가 영구적으로 손실됩니다. | 데이터베이스가 전체 복구 모드에 있는 경우 트랜잭션 로그를 사용하여 실행 취소할 수 있지만 단순 복구 모드에서는 실행 취소할 수 없습니다. 시스템에 장애가 발생하면 데이터가 영구적으로 손실됩니다. | 트랜잭션 로그를 사용하여 각 삭제 작업을 기록하므로 취소할 수 있습니다. 커밋 작업 전에 시스템 오류가 발생하면 데이터를 복원할 수 있습니다. |
ROLLBACK 불가능 | ROLLBACK 불가능 | COMMIT 이전 ROLLBACK 가능 |
여기서 COMMIT과 ROLLBACK이란
SQL에서 COMMIT 및 ROLBOLLBACK은 트랜잭션을 관리하는 데 사용됩니다. 트랜잭션은 단일 단위로 실행되는 하나 이상의 SQL 문으로 구성된 논리적 작업 단위입니다. 커밋 및 롤백을 사용하면 트랜잭션 내에서 수행된 데이터 변경의 내구성과 일관성을 제어할 수 있습니다.
COMMIT: 트랜잭션의 변경 내용을 데이터베이스에 저장하는 데 사용됩니다. COMMIT 문이 실행되면 변경 내용이 영구적으로 변경되어 실행 취소할 수 없습니다. COMMIT 문은 현재 트랜잭션을 종료하고 트랜잭션 내의 모든 변경 내용을 다른 트랜잭션에 표시합니다.
ROLBACK: 트랜잭션의 변경 내용을 실행 취소하고 데이터베이스를 이전 상태로 복원하는 데 사용됩니다. ROLBACK 문이 실행되면 트랜잭션 내의 모든 변경 내용이 삭제되고 데이터베이스가 이전 상태로 복원됩니다. ROLBACK 문은 현재 트랜잭션을 종료하고 데이터베이스를 트랜잭션이 시작되기 전의 이전 상태로 되돌립니다.
권한
DROP | TRUNCATE | DELETE |
전체 테이블 또는 데이터베이스를 삭제할 수 있으므로 가장 높은 수준의 권한이 필요합니다. | 테이블에 대한 다른 테이블 권한이 필요합니다. | 테이블에 대한 삭제 권한이 필요합니다. |
요약
DROP는 전체 테이블 또는 데이터베이스를 영구적으로 삭제하는 데 사용되고, TRUNCATE는 테이블 구조를 유지하면서 테이블에서 모든 행을 신속하게 제거하는 데 사용되며, DELETE는 특정 조건에 따라 테이블에서 특정 행을 선택적으로 제거하는 데 사용됩니다. 사용할 명령문의 선택은 속도, 데이터 보존 또는 작업 실행 취소 기능과 같은 당면한 작업의 특정 요구 사항에 따라 달라집니다.
'데이터 분석 > SQLD' 카테고리의 다른 글
SQLD 시험 전에 공부해야 할 것4 : TRANSACTION, COMMIT, ROLLBACK (0) | 2023.05.02 |
---|---|
SQLD 시험 전 공부해야 할 것3 : NVL, NULLIF, COALESCE (0) | 2023.04.29 |
SQLD 시험 전 꼭 공부해야 할 것1 : 비교연산자 (0) | 2023.04.29 |
오라클 SQL 설치하기 따라하면 어렵지 않아요 (0) | 2023.04.23 |
비전공자 SQLD 시험 합격 후기 이거 모르면 안되겠네 (0) | 2023.04.23 |