[MSSQL] Delete문 사용법 & 예제(트랜잭션)
- DB/MSSQL
- 2018. 1. 29.
데이터베이스 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(테이블 생성, 수정, 삭제)
'DB > MSSQL' 카테고리의 다른 글
[MSSQL] 집계함수(COUNT,AVG,MAX,MIN,SUM) 사용법 & 예제 (0) | 2018.02.07 |
---|---|
[MSSQL] 별칭(ALIAS) 사용법 & 예제 (0) | 2018.02.06 |
[MSSQL] Update문 사용법 & 예제(트랜잭션) (0) | 2018.01.29 |
[MSSQL] Select문 사용법 & 예제 (0) | 2018.01.29 |