Database - Chapter 3-17. SQL (DML) 기초(데이터 제거)

2025. 3. 20. 14:48·Database

🚀 SQL 데이터 삭제(DELETE) 완벽 가이드

SQL에서 데이터를 삭제하는 방법을 기본적인 DELETE 문부터 고급 활용까지 정리했습니다. 🎯
이 글을 통해 안전하고 효율적인 데이터 삭제 방법을 익혀보세요!


📌 1. 기본적인 데이터 삭제 (DELETE FROM)

🔹 개념

  • DELETE 문은 테이블에서 특정 데이터를 삭제하는 SQL 명령어입니다.
  • WHERE 절을 사용하여 특정 조건을 만족하는 데이터만 삭제할 수 있습니다.

✅ 테이블의 모든 데이터 삭제

sql
 
DELETE FROM users;

✅ 설명

  • users 테이블의 모든 데이터를 삭제합니다.
  • 주의! WHERE 절 없이 실행하면 모든 데이터가 삭제되므로 신중하게 사용해야 합니다.

💡 모든 데이터 삭제 대신 테이블을 초기화하려면 TRUNCATE 사용

sql
 
TRUNCATE TABLE users;
  • DELETE는 각 행을 개별적으로 삭제하지만, TRUNCATE는 테이블을 빠르게 초기화함

📌 2. 특정 조건을 만족하는 데이터 삭제

🔹 개념

  • WHERE 절을 사용하여 특정 조건을 만족하는 데이터만 삭제할 수 있습니다.

✅ 나이가 18 미만인 사용자 삭제

sql
 
DELETE FROM users WHERE age < 18;

✅ 설명

  • age가 18 미만인 사용자만 삭제

📌 3. 특정 개수만 삭제 (LIMIT 사용)

🔹 개념

  • LIMIT을 사용하면 삭제할 개수를 제한할 수 있습니다.

✅ 취소된 주문 중 상위 100개만 삭제

sql
DELETE FROM orders WHERE status = 'canceled' LIMIT 100;

✅ 설명

  • status가 'canceled'인 주문 중 상위 100개만 삭제

💡 대량 데이터를 삭제할 때는 한 번에 삭제하지 않고 LIMIT을 활용하여 나눠서 삭제하는 것이 안전함


📌 4. 다른 테이블과 조인하여 데이터 삭제 (JOIN 사용)

🔹 개념

  • JOIN을 사용하면 다른 테이블과의 관계를 고려하여 특정 데이터를 삭제할 수 있습니다.

✅ 마케팅 부서에 속한 직원 삭제

sql
 
 
DELETE e FROM employees AS e
JOIN departments AS d ON e.department_id = d.id
WHERE d.name = 'Marketing';
 

✅ 설명

  • departments 테이블과 employees 테이블을 조인(JOIN)
  • Marketing 부서에 속한 직원들 삭제

📌 5. USING을 사용한 삭제

🔹 개념

  • USING을 사용하면 다른 테이블과 조인하여 데이터를 삭제할 수 있습니다.
  • JOIN과 유사하지만, MySQL에서 삭제할 테이블을 더 명확하게 지정할 수 있음

✅ HR 부서에 속한 직원 삭제

sql
 
DELETE FROM employees
USING employees, departments
WHERE employees.department_id = departments.id AND departments.name = 'HR';

✅ 설명

  • departments 테이블과 연결된 employees 테이블에서 HR 부서에 속한 직원 삭제

📌 6. 삭제한 데이터 반환 (RETURNING 사용)

🔹 개념

  • RETURNING을 사용하면 삭제된 데이터를 확인할 수 있음
  • PostgreSQL에서 지원하는 기능

✅ 나이가 65 이상인 사용자 삭제 후 반환

sql
DELETE FROM users WHERE age > 65 RETURNING *;
 

✅ 설명

  • age가 65 초과인 데이터를 삭제하고 삭제된 데이터를 반환

💡 PostgreSQL에서만 지원되는 기능이며, MySQL에서는 SELECT로 미리 데이터를 확인 후 삭제하는 방식 사용

'Database' 카테고리의 다른 글

Database - Chapter 3-19. SQL (DML) 심화(파이썬으로 데이터 랜덤 생성)  (0) 2025.03.20
Database - Chapter 3-18. SQL (DML) 심화(테이블 생성)  (0) 2025.03.20
Database - Chapter 3-16. SQL (DML) 기초(데이터 업데이트)  (0) 2025.03.20
Database - Chapter 3-15. SQL (DML) 기초(데이터 조회)  (0) 2025.03.20
Database - Chapter 3-14. SQL (DML) 기초(테이블생성,테이터생성)  (0) 2025.03.20
'Database' 카테고리의 다른 글
  • Database - Chapter 3-19. SQL (DML) 심화(파이썬으로 데이터 랜덤 생성)
  • Database - Chapter 3-18. SQL (DML) 심화(테이블 생성)
  • Database - Chapter 3-16. SQL (DML) 기초(데이터 업데이트)
  • Database - Chapter 3-15. SQL (DML) 기초(데이터 조회)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (793) N
      • Python (32)
      • 프로젝트 (113) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (153)
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    remittance
    newpoliticalparty
    americanlaw
    btsreunion
    btsdischarge
    titaniumcase
    youngprofessionals
    urbantrends
    btscomeback
    RM
    trumpmuskclash
    life reflection
    basalcellcarcinoma
    college reunions
    homebartrend
    americaparty
    chatgpterror
    classaction
    hotcoffeecase
    chinanightlife
    livebroadcast
    smartphonedurability
    bts
    gpterror
    self-growth
    travel ban
    lawsuitculture
    global politics
    btsjungkook
    뷔
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Database - Chapter 3-17. SQL (DML) 기초(데이터 제거)
상단으로

티스토리툴바