[MSSQL] Delete문 사용법 & 예제(트랜잭션)

데이터베이스 MS_SQL Delete문 사용법 및 예제입니다. Delete문은 굉장히 위험한 명령어이므로 이왕이면 트랜잭션 안에서 실행해주는것이 좋습니다.

 

트랜잭션이란? 

하나의 처리를 여러 단계로 다루는 기능을 트랜잭션(Transaction)이라고 합니다. 하나의 처리를 Commit이라는 명령어를 수행하기전 마지막으로 한번 더 확인할 수 있는 기회를 줌으로써 좀 더 안정적인 데이터베이스 작업을 가능하게 합니다. 트랜잭션의 실행결과를 데이터베이스에 반영하는 것을(Commit)이라고 하고 반영하기 전으로 되돌리는 것을 롤백(RollBack)이라고 합니다.

BEGIN TRAN--트랜잭션 시작

ROLLBACK TRAN --트랜잭션 이전상태로 ROLL BACK

COMMIT TRAN --트랜잭션 완료

 

 Delete 사용법 

DELETE FROM 테이블명

DELETE FROM 테이블명 WHERE 조건문

 

트랜잭션 + Delete

SELECT * FROM 테이블명 WHERE 조회할 칼럼 = '칼럼명' --컬럼의 존재 확인

BEGIN TRAN --트랜잭션 시작
DELETE FROM 테이블명 WHERE 조건문
SELECT * FROM 테이블명 WHERE 조건문 --나만 삭제된것을 확인할수 있고 아직 적용은 안되어있는 상태이다.
ROLLBACK TRAN -되돌리기 --Delete 취소
COMMIT TRAN --트랜잭션 완료 --Delete 적용
---------------------------------------------------------------------------------------------------
SELECT * FROM My_Table WHERE Nm_Kor = '홍길동' --홍길동 컬럼의 존재 확인

BEGIN TRAN --트랜잭션 시작
DELETE FROM My_Table WHERE Nm_Kor ='홍길동' --Km_Kor이 홍길동인 칼럼 삭제
SELECT * FROM My_Table WHERE NM_KOR = '홍길동'--나만 삭제된것을 확인할수 있고 아직 적용은 안되어있는 상태이다.
ROLLBACK TRAN -되돌리기
COMMIT TRAN --트랜잭션 완료

 

 예제(Example) 

1. My_Table에서 Nm_Kor칼럼의 성이 김 씨로 시작하는 사람 삭제

SELECT * FROM My_Table WHERE Nm_Kor LIKE '김%' --삭제할 데이터 조회

BEGIN TRAN --트랜잭션 시작
DELETE FROM My_Table WHERE Nm_Kor LIKE '김%' --데이터 삭제
SELECT * FROM My_Table WHERE Nm_Kor LIKE '김%' --삭제한 데이터 조회
COMMIT TRAN -- 트랜잭션 반영

 

2. My_Table에서 회사코드(COMPANY)가 '0327'이고 품목코드(ITEM)='400478', '400614', '400688'인 데이터 삭제

SELECT * FROM My_Table WHERE COMPANY ='0327' AND ITEM IN('400478','400614','400688')

BEGIN TRAN
DELETE FROM My_Table WHERE COMPANY ='0327' AND ITEM IN('400478','400614','400688')
SELECT * FROM My_Table WHERE COMPANY = '0327' AND ITEM IN('400478','400614','400688')
COMMIT TRAN

 

3. My_Table에서 회사코드(COMPANY)가 '0327'이고, 수량(QT)이 0이거나 100인 데이터 삭제

SELECT * FROM My_Table WHERE COMPANY ='0327' AND (QT = 0 OR QT = 100)

BEGIN TRAN
DELETE FROM My_Table WHERE COMPANY ='0327' AND (QT_SO = 0 OR QT_SO = 100)
SELECT * FROM My_Table WHERE COMPANY = '0327' AND (QT = 0 OR QT = 100)
COMMIT TRAN

 

4. My_Table에서 비고 할인(DC)이 NULL이 아니고 ID(ID)가 '5249'인 데이터 삭제

SELECT * FROM COMPANY DC IS NOT NULL AND ID ='5240'

BEGIN TRAN
DELETE FROM DC IS NOT NULL AND ID ='5240'
SELECT * FROM DC IS NOT NULL AND ID ='5240'
COMMIT TRAN

 

5. My_Table에서 공급금액(AM)이 2000000 이상이고, 수정자(ID_UPDATE)가 NULL이고, 수정 일자(DAY_UPDATE)가 NULL인 데이터 삭제

SELECT * FROM My_Table WHERE AM >= 2000000 AND ID_UPDATE IS NULL AND DAY_UPDATE IS NULL

BEGIN TRAN
DELETE FROM My_Table WHERE AM >= 2000000 AND ID_UPDATE IS NULL AND DAY_UPDATE IS NULL
COMMIT TRAN

 

 

[MS_SQL] Create Table, Alter Table, Drop Table(테이블 생성, 수정, 삭제)

[MS_SQL] Insert문 사용법 & 예제

[MS_SQL] Select문 사용법 & 예제

[MS_SQL] Update문 사용법 & 예제(트랜잭션)

[MS_SQL] JOIN의 종류 설명 및 사용법 & 예제

 

 

댓글

Designed by JB FACTORY