PostgreSQL - DELETE Query: 초보자 가이드

안녕하세요, 데이터베이스 열정가 되고자 하는 여러분! 오늘 우리는 PostgreSQL의 세계로 접수하고 그 중 기본적인 연산 하나를 탐구해보겠습니다: DELETE 쿼리. 코드를 한 줄도 적지 않았다면 걱정하지 마세요 - 이 여정에서 여러분의 친절한 안내자가 되어 step by step 설명해드리겠습니다.

PostgreSQL - Delete Query

DELETE 쿼리란?

자, 구체적인 내용으로 들어가기 전에 DELETE 쿼리가 무엇인지 이해해보겠습니다. 상상해보세요, 디지털 노트북(그것이 우리의 데이터베이스입니다)이 정보로 가득 차 있다고요. 때로는 특정 페이지나 항목을 지우고 싶을 수 있습니다. PostgreSQL에서 DELETE 쿼리가 하는 일은 precisely 그것입니다 - 테이블에서 특정 행을 제거합니다.

DELETE 쿼리의 문법

이제 DELETE 쿼리의 기본 구조를 살펴보겠습니다:

DELETE FROM table_name
WHERE condition;

이를 간단히 설명하자면:

  1. DELETE FROM: 우리의 쿼리를 시작하는 방법으로, PostgreSQL에 무언가를 지우도록 지시합니다.
  2. table_name: 데이터를 지우고 싶은 테이블의 이름입니다.
  3. WHERE: 이 조건절은 선택 사항이지만 매우 중요합니다. 어떤 행을 지울지 지정합니다.
  4. condition: 어떤 행을 지울지 정의하는 곳입니다.

이를 도우미 로봇에게 지시하는 것처럼 생각해보세요: "안녕 로봇, 어제 날짜인 노트북(테이블)에서 모두 지워."

DELETE 쿼리의 활용 사례

예제 1: 모든 행 지우기

간단한 예제로 시작해보겠습니다. old_records라는 테이블이 있다고 가정해봅시다. 이 테이블의 모든 행을 지우고 싶습니다.

DELETE FROM old_records;

이 쿼리는 old_records 테이블의 모든 행을 제거합니다. 이 쿼리는 조심스럽게 사용하세요 - 노트북의 모든 것을 지우는 것과 같습니다!

예제 2: 특정 행 지우기

이제 students 테이블이 있다고 가정해봅시다. 졸업한 학생들을 모두 지우고 싶습니다.

DELETE FROM students
WHERE status = 'graduated';

이 쿼리는 status 열이 'graduated'인 행만 지웁니다. 이는 학교를 마친 학생들을 목록에서 지우는 것과 같습니다.

예제 3: 여러 조건을 기반으로 지우기

조금 더 복잡한 예제를 보겠습니다. orders 테이블이 있다고 가정해봅시다. 취소된 주문 중 30일 이상된 것을 모두 지우고 싶습니다.

DELETE FROM orders
WHERE status = 'cancelled' AND order_date < CURRENT_DATE - INTERVAL '30 days';

이 쿼리는 두 가지 조건을 결합합니다:

  1. 주문 상태가 'cancelled'인 경우
  2. 주문 날짜가 30일 이상 지났을 경우

이는 작년의 취소된 피자 주문을 정리하는 것과 같습니다!

예제 4: 서브쿼리를 사용하여 지우기

때로는 다른 테이블의 정보를 기반으로 행을 지우고 싶을 수 있습니다. 예를 들어, 최근 1년 동안 구매하지 않은 고객의 주문을 모두 지우고 싶습니다.

DELETE FROM orders
WHERE customer_id IN (
SELECT customer_id
FROM customers
WHERE last_purchase_date < CURRENT_DATE - INTERVAL '1 year'
);

이 쿼리는 서브쿼리를 사용하여 최근 1년 동안 구매하지 않은 고객을 찾아 그들의 주문을 모두 지웁니다. 이는 잃어버린 고객의 주문 기록을 모두 지우는 것과 같습니다.

안전第一: 트랜잭션 사용

DELETE 쿼리를 사용할 때, 특히 중요한 데이터를 다룰 때는 트랜잭션을 사용하는 것이 좋습니다. 트랜잭션은 안전망과 같습니다 - 잘못된 일이 발생하면 변경 사항을 취소할 수 있습니다.

트랜잭션을 사용하는 방법은 다음과 같습니다:

BEGIN;
DELETE FROM students WHERE status = 'graduated';
-- 변경 사항을 확인해보세요
COMMIT;
-- 아니면 잘못된 일이 발생한 경우
-- ROLLBACK;

이렇게 하면 변경 사항을 영구적으로 적용하기 전에 확인할 수 있으며(Commit), 필요하다면 변경 사항을 취소할 수 있습니다(Rollback).

일반적인 DELETE 방법

일반적인 DELETE 방법을 요약한 표를 아래에 제공합니다:

방법 설명 예제
모든 행 지우기 테이블에서 모든 데이터 제거 DELETE FROM table_name;
조건을 기반으로 지우기 특정 조건을 만족하는 행 제거 DELETE FROM table_name WHERE condition;
서브쿼리를 사용하여 지우기 다른 쿼리의 결과를 기반으로 행 제거 DELETE FROM table_name WHERE column IN (SELECT...);
조인을 사용하여 지우기 조인된 테이블의 데이터를 기반으로 행 제거 DELETE FROM table1 USING table2 WHERE table1.id = table2.id;
리턴을 사용하여 지우기 행을 지우고 지워진 데이터 반환 DELETE FROM table_name RETURNING *;

결론

그렇게 해서 여러분의 친애하는 학생 여러분! 우리는 PostgreSQL의 DELETE 쿼리 세계를 여행하며, 간단한 지우기부터 더 복잡한 연산까지 다루었습니다. 강력한 권한이 따르는 것은 큰 책임이 따릅니다 - DELETE 쿼리를 실행하기 전에 WHERE 조건을 반드시 확인하세요.

이 예제를 연습하고, 자신의 데이터로 실험해보세요. 곧 프로처럼 데이터를 지우는 법을 배울 것입니다. 단, 과제를 실수로 지우지 마세요 - "PostgreSQL이 내 과제를 먹었다"는 핑계는 받아들이지 않겠습니다!

기쁜 쿼리 작성을 기원하며, 여러분의 데이터베이스가 항상 깨끗하고 잘 관리되기를 바랍니다!

Credits: Image by storyset