SQL

테이블 삭제 명령어 비교 TRUNCATE, DROP, DELETE

5kiran 2023. 8. 21.
반응형

오늘은 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

댓글