안녕하세요. SQLER의 코난 김대우입니다.
이번 강좌에서는, 3-3. DELETE를 이용한 로우 삭제를 진행 하겠습니다.
SQLER에서 진행되는, 챗GPT와 함께 배우는 SQL Server 강좌 목록
TL;DR
DELETE 구문으로 로우 데이터를 삭제합니다. FROM 절의 테이블 이름, WHERE 절로 삭제할 로우를 필터링합니다.
DELETE 구문 예제
이번에 진행할 내용은 DELETE를 사용한 로우 삭제입니다. UPDATE보다 더 단순합니다. 먼저, 예제를 확인합니다.
-- ProductDescriptionID가 3인 로우 조회 SELECT * FROM Production.ProductReview WHERE ProductReviewID = 3; GO -- ProductDescriptionID가 3인 로우를 삭제 DELETE FROM Production.ProductReview WHERE ProductReviewID = 3; GO -- ProductDescriptionID가 3인 로우 조회 SELECT * FROM Production.ProductReview WHERE ProductReviewID = 3; GO
DELETE 구문은 이렇게 FROM 절 뒤에 테이블명, WHERE 절로 삭제할 로우를 필터링해 수행합니다.
가끔 테이블 전체의 데이터를 지워야 할 경우가 있습니다. 다음 DELETE 쿼리로 테이블의 전체 데이터를 삭제할 수 있습니다.
DELETE FROM 테이블명 |
이렇게 WHERE절을 지정하지 않으면 됩니다.
또 다른 방법은 바로 다음 강좌에서 배울 TRUNCATE TABLE 구문을 사용하는 방법도 있습니다. 두 방식에는 몇 가지 차이가 있는데요, 다음 강좌에서 상세하게 소개해 드리겠습니다.
테이블 조회 결과셋을 참조해 삭제
UPDATE와 마찬가지로, 테이블의 결과셋을 참조해 삭제하는 방식도 자주 사용됩니다.
-- 제품 리뷰 테이블에서 점수가 5점 미만인 리뷰만 조회 SELECT ProductReviewID, Rating, Comments FROM Production.ProductReview WHERE RATING < 5; GO -- 점수가 5점 미만인 리뷰의 ProductReviewID를 참조해 DELETE 수행 DELETE FROM Production.ProductReview WHERE ProductReviewID IN ( SELECT ProductReviewID FROM Production.ProductReview WHERE RATING < 5 ); GO -- 로우 삭제 확인 SELECT ProductReviewID, Rating, Comments FROM Production.ProductReview WHERE RATING < 5; GO
DELETE 구문 정보
테이블로부터 하나 이상의 로우를 삭제
DELETE [FROM] table_name [WHERE search_conditions] |
WHERE
- 삭제할 로우를 결정한다.
- 생략할 경우 모든 행을 삭제한다.
FROM
- 다른 테이블의 데이터를 참조해 삭제할 로우를 선택할 수도 있다.
- 하위 쿼리(Subquery)를 사용하는 것과 같은 역할을 한다.
SQL 강좌 책 구매
강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다.