[MariaDB] JOIN문으로 여러 테이블 조회하기

코딩하는 꽁지·2023년 10월 29일
0

데이터베이스

목록 보기
9/14

JOIN?

JOIN문은 2개 이상의 테이블을 (조건에 맞게) 결합해 가상의 테이블처럼 만들어서 결과를 보여주는 것이라 할 수 있다.

이렇게 총 4가지 유형이 있다. 일반적으로 가장 많이 사용하는 것이 INNER 조인이다.

그럼 각각의 조인에 대해 살펴보도록 하자.

INNER JOIN

SELECT A.CUSTOMER_ID, A.NAME, B.AMOUNT, B.PAYMENT_DATE
FROM CUSTOMER AS A
INNER JOIN PAYMENT AS B
	ON A.CUSTOMER_ID = B.CUSTOMER_ID;

특정 컬럼을 기준으로 정확하게 매칭된 집합을 반환한다.

위의 예시에서는 CUSTOMER_ID를 기준으로 조인하게 된다. 즉, A와 B 둘 다 CUSTOMER_ID를 갖고 있다는 의미이다. 그래서 JOIN은 주로 Primary Key를 기준으로 수행된다.

테이블이 최소 두 개는 사용되기 때문에 ALIAS를 써야 편하다.

참고로, 그냥 JOIN 이라고만 작성해도 INNER JOIN을 의미한다.

LEFT/RIGHT OUTER JOIN

# LEFT 조인
SELECT A.CUSTOMER_ID, A.NAME, B.AMOUNT, B.PAYMENT_DATE
FROM CUSTOMER A
LEFT JOIN PAYMENT B
	ON A.CUSTOMER_ID = B.CUSTOMER_ID;
    
# RIGHT 조인
SELECT A.CUSTOMER_ID, A.NAME, B.AMOUNT, B.PAYMENT_DATE
FROM CUSTOMER A
RIGHT JOIN PAYMENT B
	ON A.CUSTOMER_ID = B.CUSTOMER_ID;

특정 컬럼을 기준으로 매칭하되, 한쪽 집합은 모두 출력하고 다른 한쪽 집합은 매칭되는 컬럼의 값만 출력한다. 매칭되지 않은 컬럼의 값은 NULL로 채운다.

LEFT 조인이면 왼쪽 집합(CUSTOMER 테이블)의 값은 모두 출력하고, 오른쪽 집합(PAYMENT 테이블)은 매칭되는 값만 출력한다.

반대로 RIGHT 조인이면 오른쪽 집합(PAYMENT 테이블)의 값은 모두 출력하고, 왼쪽 집합(CUSTOMER 테이블)은 매칭되는 값만 출력한다.

FULL OUTER JOIN

SELECT A.CUSTOMER_ID, A.NAME, B.AMOUNT, B.PAYMENT_DATE
FROM CUSTOMER A
FULL OUTER JOIN PAYMENT B
	ON A.CUSTOMER_ID = B.CUSTOMER_ID;

# 다른 방식
SELECT A.CUSTOMER_ID, A.NAME, B.AMOUNT, B.PAYMENT_DATE
FROM CUSTOMER A
JOIN PAYMENT B;

JOIN 하려는 테이블들의 출력가능한 모든 데이터를 포함한 집합을 반환한다.
쉽게 말해, INNER, LEFT, RIGHT 조인 결과를 모두 출력하는 것이라 할 수 있다.

profile
프로그래밍으로 온 세상을 떠들썩 하게~🪼

0개의 댓글