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