[MySQL] DELETE JOIN 번역

2022. 5. 28. 02:31·SQL/개념
목차
  1. MySQL DELETE JOIN with INNER JOIN
  2. MySQL DELETE JOIN with INNER JOIN example
  3. MySQL DELETE JOIN with LEFT JOIN
  4. MySQL DELETE JOIN with LEFT JOIN example

요약 : 해당 튜토리얼에서는 MySQL DELETE JOIN문을 이용하여 여러 테이블에서 데이터를 삭제하는 방법을 보여줍니다.

이전 튜토리얼에서 배운 내용 :

  • 여러 테이블에 대한 단일 DELETE문
  • 자식 테이블(child table)에 foreign key에 대한 ON DELETE CASCADE 참조 작업이 있는 여러 관련 테이블에 대한 단일 DELETE문

 

이번 튜토리얼에서는 DELETE문과 함께 INNER JOIN 또는 LEFT JOIN 절을 사용하여 여러 테이블에서 데이터를 삭제(제거)하는 보다 유연한 방법을 소개합니다.

 

MySQL DELETE JOIN with INNER JOIN

MySQL은 DELETE 문에서 INNER JOIN절을 사용하여 테이블에서 행을 삭제하고 다른 테이블에서 일치하는 행 도한 삭제할 수 있습니다. 

 

예를 들어, 지정된 조건을 모두 충족하는 T1 및 T2 테이블 모두에서 행을 삭제하려면 다음과 같은 쿼리를 사용합니다. 

DELETE T1, T2 
FROM T1 
INNER JOIN T2 ON T1.key = T2.key 
WHERE condition;

DELETE와 FROM 사이에 테이블 이름 T1과 T2를 넣습니다. T1 테이블을 생략하게 되면 DELETE 문은 T2 테이블의 행만 삭제하게 됩니다. 마찬가지로, T2 테이블을 생략하면 DELETE 문은 T1 테이블의 행만 삭제하게 됩니다. 

 

T1.key = T2.key 식은 삭제할 T1과 T2 테이블 간의 일치하는 행에 대한 조건을 지정합니다.

 

WHERE 절의 조건은 삭제할 T1및 T2의 행을 결정합니다. 

 

MySQL DELETE JOIN with INNER JOIN example

다음과 같은 구조와 데이터를 가진 두 개의 테이블 t1과 t2가 있다고 가정합니다 :

DROP TABLE IF EXISTS t1, t2;

CREATE TABLE t1 (
    id INT PRIMARY KEY AUTO_INCREMENT
);

CREATE TABLE t2 (
    id VARCHAR(20) PRIMARY KEY,
    ref INT NOT NULL
);

INSERT INTO t1 VALUES (1),(2),(3);

INSERT INTO t2(id,ref) VALUES('A',1),('B',2),('C',3);
 

다음 쿼리는 DELETE...INNER JOIN문을 사용하여 t1 테이블에서 ID가 1인 행과 t2 테이블에서 ref가 1인 행을 삭제합니다. 

DELETE t1,t2 FROM t1
        INNER JOIN
    t2 ON t2.ref = t1.id 
WHERE
    t1.id = 1;
 
해당 쿼리는 다음 메시지를 반환했습니다 : 
2 row(s) affected

이것은 두 개의 행이 삭제되었음을 알려줍니다. 

MySQL DELETE JOIN with LEFT JOIN

우리는 종종 SELECT 문에서 LEFT JOIN을 사용하여 오른쪽 테이블에 일치하는 행이 있거나 없는 왼쪽 테이블의 행을 찾습니다. DELETE 문에서도 LEFT JOIN을 사용하여 다른 테이블(오른쪽 테이블)에 일치하는 행이 없는 테이블(왼쪽 테이블)의 행을 삭제할 수도 있습니다. 다음 쿼리는 LEFT JOIN과 함께 DELET 문을 사용하여 T2 테이블에 해당되는 행이 없는 T1 테이블에서 행을 삭제하는 방법을 보여줍니다. 

 

DELETE T1 
FROM T1
        LEFT JOIN
    T2 ON T1.key = T2.key 
WHERE
    T2.key IS NULL;
 

 

INNER JOIN 절에서 했던 것 처럼 T1과 T2 테이블이 아니라, DELETE 키워드 뒤에 T1 테이블만 넣습니다. 

MySQL DELETE JOIN with LEFT JOIN example

샘플 데이터베이스에서 고객 및 주문 테이블을 참조하십시오:

 

각 고객은 0개 이상의 주문을 가지고 있습니다. 그러나 각 주문은 단 한명의 고객에게만 속합니다. 

우리는 LEFT JOIN절을 DELETE 문과  함께 사용하여 고객 마스터 데이터를 정리할 수 있습니다. 다음 쿼리는 주문을 하지 않은 고객 데이터를 제거합니다:

DELETE customers 
FROM customers
        LEFT JOIN
    orders ON customers.customerNumber = orders.customerNumber 
WHERE
    orderNumber IS NULL;

 

 

다음 쿼리를 사용하여 주문이 없는 고객이 있는지 확인하여 삭제를 확인할 수 있습니다. 

SELECT 
    c.customerNumber, 
    c.customerName, 
    orderNumber
FROM
    customers c
        LEFT JOIN
    orders o ON c.customerNumber = o.customerNumber
WHERE
    orderNumber IS NULL;

The query returned an empty result set which is what we expected.

쿼리는 우리가 예상했던 것과 같은 빈 결과 집합을 반환했습니다.

 

'SQL > 개념' 카테고리의 다른 글

[MySQL] SELF-JOIN  (0) 2022.06.10
[TIL] MySQL에서 위도-경도 거리 계산하기  (0) 2022.06.09
[MySQL] WINDOW함수  (0) 2022.05.26
[MY SQL] CONCAT과 GROUP_CONCAT  (0) 2022.05.05
[Oracle] Like 연산자  (0) 2022.04.08
  1. MySQL DELETE JOIN with INNER JOIN
  2. MySQL DELETE JOIN with INNER JOIN example
  3. MySQL DELETE JOIN with LEFT JOIN
  4. MySQL DELETE JOIN with LEFT JOIN example
'SQL/개념' 카테고리의 다른 글
  • [MySQL] SELF-JOIN
  • [TIL] MySQL에서 위도-경도 거리 계산하기
  • [MySQL] WINDOW함수
  • [MY SQL] CONCAT과 GROUP_CONCAT
소금깨
소금깨
  • 소금깨
    고군분투 인생살이
    소금깨
  • 전체
    오늘
    어제
    • 분류 전체보기 (328)
      • SQL (271)
        • 프로그래머스 (27)
        • LeetCode (198)
        • Hacker Rank (27)
        • Solve SQL (1)
        • 개념 (15)
      • 데이터 분석 (16)
        • 참고하며 공부하기 (14)
      • 기타 (15)
        • 통계 (14)
      • 오류 (6)
      • 인생살이 (0)
        • 리뷰 (0)
        • 일기 (0)
      • 中文 (0)
      • TABLEAU (3)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    group by
    Hard
    해커랭크
    프로그래머스
    solvesql
    패스트캠퍼스후기
    패캠챌린지
    직장인인강
    HACKER_RANK
    패스트캠퍼스
    시계열데이터분석
    medium
    LeetCode
    easy
    직장인자기계발
    MySQL
    프리미엄
    파이썬을활용한시계열데이터분석
    SQL
    파이썬을활용한시계열데이터분석AtoZ올인원패키지Online
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
소금깨
[MySQL] DELETE JOIN 번역
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.