데이터 자료를 삭제하기 위해서 사용되는 DELETE, DROP, TRUNCATE의 차이를 알아보도록 하자
Create Data
CREATE TABLE [dbo].[Temp_Cust](
[cust_id] [int] NOT NULL,
[cust_nm] [varchar](50) NULL,
[cust_depth] [varchar](10) NULL,
CONSTRAINT [PK_Temp_Cust] PRIMARY KEY CLUSTERED
(
[cust_id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
INSERT INTO Temp_Cust VALUES (1, '김나나', '총무부')
INSERT INTO Temp_Cust VALUES (2, '안다다', '인사부')
INSERT INTO Temp_Cust VALUES (3, '황하하', '기획부')
SELECT * FROM Temp_Cust
DELETE
- DELETE 는 WHERE 절을 함께 이용할 수 있으며, 특정 행을 삭제한다.
- BEGIN을 이용하여 COMMIT/ROLLBACK을 이용할 수 있다.
BEGIN TRAN
DELETE FROM Temp_Cust WHERE cust_id = 3
-- COMMIT OR ROLLBACK
SELECT * FROM Temp_Cust
DELETE는 WHERE 조건을 이용하여 지정된 ROW 자료만 삭제가 가능하다.
TRUNCATE
- TRUNCATGE는 WHERE 절을 함께 사용할 수 없으며, 테이블의 모두 행을 삭제한다.
- BEGIN을 이용하여 COMMIT/ROLLBACK을 이용할 수 있다.
BEGIN TRAN
TRUNCATE TABLE Temp_Cust
-- COMMIT OR ROLLBACK
SELECT * FROM Temp_Cust WITH(NoLock)
TRUNCATE는 WHERE 조건을 이용할 수 없으며, 지정된 테이블의 모든 ROW 데이터가 삭제된다. 사실 많은 데이터가 쌓이게 되면 DELETE로 데이터를 삭제하는 데에도 성능에 문제가 발생하거나 처리가 불가능한 경우들이 발생한다. 특히 실무에 로그성 데이터는 속절없이 쌓이기 때문에 특정 기간에 백업을 처리하고 로그 데이터를 한 번씩 비울 때에 TRUNCATE를 이용해야 처리가 가능할 때가 있다.
DROP
- DROP 은 테이블 자체를 제거한다.
- BEGIN 을 이용하여 COMMIT/ROLLBACK을 이용할 수 있다.
BEGIN TRAN
DROP TABLE Temp_Cust
-- COMMIT OR ROLLBACK
SELECT * FROM Temp_Cust WITH(NoLock)
DROP 은 테이블 자체를 모두 제거하기 때문에 당연히 저장된 모든 ROW의 데이터도 삭제된다.
DROP은 BEGIN 이 안되지않나 싶어서 모두 걸어서 테스트를 진행해 보았다. BEGIN 걸어서 COMMIT/ROLLBACK 모두 처리가 가능한 것으로 확인되었다. BEGIN 은 생활화 해야 한다...
'데이터베이스[DB] > MSSQL' 카테고리의 다른 글
[MS-SQL] LEFT,RIGHT,SUBSTRING, LEN - 문자열함수 (0) | 2025.03.25 |
---|---|
[MS-SQL] DATEPART, DATENAME - 일자(요일,주차,분기) 함수 (0) | 2025.03.21 |
[MS-SQL] UNION, UNION ALL (0) | 2025.03.18 |
[MS-SQL] COMMIT, ROLLBACK, BEGIN TRAN (0) | 2025.02.11 |
[MS-SQL] 테이블별 용량확인 (0) | 2025.01.18 |
[MS-SQL] TOP, WITH TIES, ROW_NUMBER (0) | 2025.01.17 |
[MS-SQL] IIF, CASE ( DECODE, CASE ) 조건문 (0) | 2025.01.15 |
[MS-SQL] 테이블생성, 컬럼생성, 컬럼수정, 컬럼삭제, 테이블명변경 ( Create table, Alter table, Modify, Rename ) (0) | 2025.01.14 |