조인
LEFT OUTER JOIN (왼쪽 외부 조인)
LEFT OUTER JOIN
(또는LEFT JOIN
):- 왼쪽(먼저 명시된) 테이블의 모든 행을 결과에 포함.
- 오른쪽 테이블에서는 조인 조건에 일치하는 행의 데이터를 가져옴.
- 오른쪽 테이블에 일치하는 데이터가 없으면 해당 컬럼들은
NULL
값으로 표시.
- 문법:
SELECT table1.column1, table2.column1
FROM table1 -- 왼쪽 테이블
LEFT OUTER JOIN table2 ON table1.join_column = table2.join_column; -- 오른쪽 테이블
OUTER
키워드는 생략 가능.- 예시: 모든
TB_COMPANY_MASTER
(기업정보)를 조회하되, 각 기업의TB_LOAN_ACCOUNT
(여신정보)가 있다면 함께 표시 (여신이 없는 기업도 결과에 포함, 여신 관련 컬럼은NULL
).
SELECT
c.COMPANY_NM AS "회사명",
l.LOAN_ACCT_NO AS "여신계좌번호",
l.LOAN_AMT AS "여신금액"
FROM
TB_COMPANY_MASTER c
LEFT JOIN
TB_LOAN_ACCOUNT l ON c.BIZ_REG_NO = l.BIZ_REG_NO
ORDER BY
c.COMPANY_NM;
RIGHT OUTER JOIN (오른쪽 외부 조인)
RIGHT OUTER JOIN
(또는RIGHT JOIN
):- 오른쪽(두 번째 명시된) 테이블의 모든 행을 결과에 포함.
- 왼쪽 테이블에서는 조인 조건에 일치하는 행의 데이터를 가져옴.
- 왼쪽 테이블에 일치하는 데이터가 없으면 해당 컬럼들은
NULL
값으로 표시.
- 문법:
SELECT table1.column1, table2.column1
FROM table1 -- 왼쪽 테이블
RIGHT OUTER JOIN table2 ON table1.join_column = table2.join_column; -- 오른쪽 테이블
OUTER
키워드는 생략 가능.- 예시: 모든
TB_LOAN_ACCOUNT
(여신정보) 를 조회하되, 각 여신에 해당하는TB_COMPANY_MASTER
(기업정보)를 함께 표시 (매칭되는 기업 정보가 없는 여신이 있다면(데이터 이상), 기업 관련 컬럼은NULL
). - (일반적으로
LEFT JOIN
을 더 선호하며, 테이블 순서를 바꿔LEFT JOIN
으로 표현 가능)
SELECT
c.COMPANY_NM AS "회사명",
l.LOAN_ACCT_NO AS "여신계좌번호",
l.LOAN_AMT AS "여신금액"
FROM
TB_COMPANY_MASTER c
RIGHT JOIN
TB_LOAN_ACCOUNT l ON c.BIZ_REG_NO = l.BIZ_REG_NO
ORDER BY
l.LOAN_ACCT_NO;
FULL OUTER JOIN (완전 외부 조인)
FULL OUTER JOIN
(또는FULL JOIN
):- 양쪽 테이블의 모든 행을 결과에 포함.
- 조인 조건에 일치하는 데이터가 있으면 해당 값을, 없으면
NULL
값으로 표시. - 즉, 왼쪽 테이블에는 있지만 오른쪽에는 없는 행, 오른쪽 테이블에는 있지만 왼쪽에는 없는 행, 양쪽 모두에 있는 행을 모두 보여줌.
- 문법:
SELECT table1.column1, table2.column1
FROM table1
FULL OUTER JOIN table2 ON table1.join_column = table2.join_column;
OUTER
키워드는 생략 가능.- 예시:
TB_COMPANY_MASTER
와TB_LOAN_ACCOUNT
간의 관계에서, 기업 정보만 있거나, 여신 정보만 있거나, 둘 다 있는 모든 경우를 조회.
SELECT
c.COMPANY_NM AS "회사명",
l.LOAN_ACCT_NO AS "여신계좌번호"
FROM
TB_COMPANY_MASTER c
FULL JOIN
TB_LOAN_ACCOUNT l ON c.BIZ_REG_NO = l.BIZ_REG_NO
ORDER BY
c.COMPANY_NM, l.LOAN_ACCT_NO;
- 활용: 두 데이터셋 간의 불일치 항목을 찾거나, 양쪽 데이터를 모두 유지하면서 비교 분석할 때 유용.
조인(JOIN)과 집합 연산자(SET Operators) 비교
- 목표의 차이:
- 조인 (JOIN): 여러 테이블의 컬럼들을 옆으로 합쳐서 연관된 데이터를 하나의 행으로 만듦. (데이터를 '넓게' 확장)
- 집합 연산자 (SET Operators:
UNION
,UNION ALL
,INTERSECT
,MINUS
): 두 개 이상의SELECT
문의 행들을 위아래로 합치거나 비교. (데이터를 '길게' 확장하거나 비교)
- 사용 시점:
- 조인: 서로 다른 정보를 가진 테이블들에서 관련 있는 데이터를 연결하여 한 번에 보고 싶을 때.
- 예: 기업명(기업테이블)과 그 기업의 매출액(재무테이블)을 함께 조회.
- 집합 연산자: 유사한 구조의 데이터셋을 합치거나, 두 데이터셋 간의 공통/차이점을 찾고 싶을 때.
- 예: 서울 지점 고객 목록과 부산 지점 고객 목록을 합쳐 전체 고객 목록 생성 (
UNION ALL
). - 예: 작년 우수 고객 목록과 올해 우수 고객 목록에서 변동 없는 고객 찾기 (
INTERSECT
).
- 예: 서울 지점 고객 목록과 부산 지점 고객 목록을 합쳐 전체 고객 목록 생성 (
- 조인: 서로 다른 정보를 가진 테이블들에서 관련 있는 데이터를 연결하여 한 번에 보고 싶을 때.
- 컬럼 처리:
- 조인: 결과에 양쪽 테이블의 컬럼들이 모두 (또는 선택적으로) 포함될 수 있음.
- 집합 연산자: 참여하는
SELECT
문의 컬럼 개수와 데이터 타입이 일치해야 하며, 결과 컬럼은 첫 번째SELECT
문을 따름.