[sql] INNER JOIN, LEFT JOIN 등을 사용하여 여러 테이블에서 레코드를 삭제하는 방법

데이터베이스에서 레코드를 삭제하기 위해 주로 사용되는 SQL 문은 DELETE 문입니다. 이 문을 사용하여 단일 테이블에서 레코드를 삭제하는 것은 간단합니다. 하지만 여러 테이블 간에 관계가 있는 경우, INNER JOIN, LEFT JOIN, RIGHT JOIN 등을 사용하여 레코드를 삭제해야 할 수도 있습니다.

INNER JOIN을 사용하여 레코드 삭제하기

INNER JOIN은 연관된 테이블들의 공통된 레코드들만 선택하는 데 사용됩니다. 여러 테이블에서 레코드를 삭제하려면 다음과 같은 방법을 사용할 수 있습니다.

DELETE t1
FROM table1 t1
INNER JOIN table2 t2 ON t1.id = t2.id
WHERE 조건;

위 예제에서는 table1table2라는 두 개의 테이블이 있으며, id 열을 기준으로 INNER JOIN 연산을 수행합니다. 이렇게 INNER JOIN된 레코드들 중에서 조건에 해당하는 레코드들을 삭제합니다.

LEFT JOIN을 사용하여 레코드 삭제하기

LEFT JOIN은 왼쪽 테이블(첫 번째 테이블)의 모든 레코드와 오른쪽 테이블(두 번째 테이블)의 일치하는 레코드를 선택하는 데 사용됩니다. LEFT JOIN을 사용하여 여러 테이블에서 레코드를 삭제하려면 다음과 같은 방법을 사용할 수 있습니다.

DELETE t1
FROM table1 t1
LEFT JOIN table2 t2 ON t1.id = t2.id
WHERE t2.id IS NULL;

위 예제에서는 table1table2라는 두 개의 테이블이 있으며, id 열을 기준으로 LEFT JOIN 연산을 수행합니다. 이렇게 LEFT JOIN된 레코드들 중에서 오른쪽 테이블(table2)의 idNULL인 레코드들을 삭제합니다.

RIGHT JOIN을 사용하여 레코드 삭제하기

RIGHT JOIN은 왼쪽 테이블(첫 번째 테이블)의 일치하는 레코드와 오른쪽 테이블(두 번째 테이블)의 모든 레코드를 선택하는 데 사용됩니다. RIGHT JOIN을 사용하여 여러 테이블에서 레코드를 삭제하려면 다음과 같은 방법을 사용할 수 있습니다.

DELETE t1
FROM table1 t1
RIGHT JOIN table2 t2 ON t1.id = t2.id
WHERE t1.id IS NULL;

위 예제에서는 table1table2라는 두 개의 테이블이 있으며, id 열을 기준으로 RIGHT JOIN 연산을 수행합니다. 이렇게 RIGHT JOIN된 레코드들 중에서 왼쪽 테이블(table1)의 idNULL인 레코드들을 삭제합니다.


위와 같이 INNER JOIN, LEFT JOIN, RIGHT JOIN을 사용하면 여러 테이블에서 레코드를 삭제하는 작업을 수행할 수 있습니다. 이때 주의해야 할 점은 삭제할 레코드의 조건을 명확히 지정하여 원하지 않는 레코드를 삭제하지 않도록 해야 합니다.

참고 문서: