반응형
안녕하세요. 투자하는 개발자입니다
오늘은 데이터를 삭제할 때 사용하는 DELETE, TRUNCATE, DROP 쿼리들을 배워보겠습니다.
모든 DB들 마다 그들의 철학과 정책이 다르겠지만, 최소한 CRUD는 같은 쿼리를 사용하기 때문에
기본적인 쿼리를 알고 계신다면 데이터베이스에 관계없이 활용하실 수 있습니다.
데이터를 삭제할 때 사용하는 쿼리는 DELETE문, TRUNCATE문 DROP문이 있습니다.
결국 최종목표인 데이터를 삭제하는 결과는 동일해지나, 각각의 차이점이 존재합니다.
구분 |
테이블 |
저장공간 |
속도 |
복구 |
DELETE |
존재 |
존재 |
느림 |
가능 |
TRUNCATE |
삭제 |
삭제 |
빠름 |
불가 |
DROP |
삭제 |
삭제 |
빠름 |
불가 |
1. DELETE
DELETE FROM [스키마].[테이블명] | cs |
입력한 테이블의 데이터를 삭제 하실 수 있습니다.
데이터를 삭제하지만 그 안에 디스크 공간은 그대로 남아있습니다.
특히 DELETE는 ROLLBACK을 통해 삭제한 데이터도 살릴 수 있는 특징이 있습니다.
DELETE FROM [스키마].[테이블명] WHERE [조건컬럼] = [조건값] | cs |
WHERE조건을 추가하면 테이블 내 원하시는 컬럼의 값을 삭제하거나, 조건에 포함되는 범위의 값을 삭제하실 수 있습니다. (BETWEEN, IN 등을 활용)
2.TRUNCATE
TRUNCATE문은 테이블내 데이터를 삭제하는 쿼리입니다.
다만 테이블을 삭제하는 것이 아닌, 테이블 내 데이터를 삭제하여 소위 테이블 껍데기는 그대로 남아 있게 됩니다.
증분작업처리를 할 때, 퍼포먼스에 따라 TRUNCATE로 처리할때가 상당히 많이 있습니다. 참고로 TRUNCATE는 AUTO COMMIT이여서 한번 삭제하면 복구할 수 없습니다.
3. DROP
DROP TABLE [스키마명].[테이블명] | cs |
DROP문은 테이블 전체를 삭제하는 쿼리입니다. DROP 역시 AUTO COMMIT이여서 한번 삭제하면 복구할 수 없습니다.
참고로 PostgreSQL에서는 DROP문 사용시 TRUNCATE문을 먼저 사용 후 DROP문을 사용하시는 것이 좋습니다.
이유는 DROP문으로 테이블 및 데이터를 삭제하여도, 소위 데이터 찌꺼기들이 남아 있어 나중에 하나하나 찾아 삭제할 번거로움이 있기에 데이터를 삭제 후 DROP으로 테이블을 삭제해주세요~
반응형
'DB > MSSQL (SQLSERVER)' 카테고리의 다른 글
[MSSQL] SQL 쿼리 튜닝 -> 인덱스(index)로 답을 찾자! (0) | 2020.07.14 |
---|---|
[MSSQL] 쿼리 CPU사용량 조회 -> 튜닝 시작 전 CPU확인 방법 (0) | 2020.07.14 |
[MSSQL] WITH 사용해서 연속숫자 조회/뽑기 (0) | 2020.07.13 |
[MSSQL] 스키마 별 전체 행수(ROW)수 구하기 - COUNT (0) | 2020.07.13 |
[MSSQL] UPDATE문 및 사용법 (0) | 2020.07.13 |