Chapter 6. JOIN

김승현·2021년 10월 11일
0

조인문(JOIN)


  • 두 개 이상의 테이블에서 연관성을 가지고 있는 데이터들을 따로 분류하여 새로운 가상의 테이블을 이용하여 출력
  • 서로 다른 테이블에서 각 각의 공통 값을 이용함으로써 필드를 조합할 수 있다.



사용법


Oracle 전용 구문방식

  • 테이블 연결에 사용할 두 테이블의 컬럼명이 서로 다른 경우

    • SELECT 속성1,속성2...
      FROM TABLE_A, TABLE_B WHERE 공통속성A = 공통속성B;
  • 테이블 연결에 사용할 두 테이블의 컬럼명이 서로 같은 경우

    • SELECT 속성1,속성2...
      FROM TABLE_A, TABLE_B WHERE TABLE_A.공통속성A = TABLE_B.공통속성B;

    • SELECT 속성1,속성2...
      FROM TABLE_A A, TABLE_B B WHERE A.공통속성A = B.공통속성B;
      - 별칭을 적용한 후 사용 가능


ANSI 표준 구문방식

  • 테이블 연결에 사용할 두 테이블의 컬럼명이 서로 다른 경우

    • SELECT 속성1,속성2...
      FROM TABLE_A JOIN TABLE_B ON (공통속성A = 공통속성B);
  • 테이블 연결에 사용할 두 테이블의 컬럼명이 서로 같은 경우

    • SELECT 속성1,속성2...
      FROM TABLE_A, JOIN TABLE_B USING (공통속성);



JOIN의 종류


  • INNER JOIN(내부 조인) : 교집합
  • OUTER JOIN(외부 조인) : 합집합
    • LEFT OUTER JOIN (왼쪽 외부 조인)
    • RIGHT OUTER JOIN (오른쪽 외부 조인)
    • FULL OUTER JOIN (완전 외부 조인)



INNER JOIN


  • 테이블 A와 테이블 B 모두 조건 구문에 일치하는 데이터만 반환(교집합)
  • SELECT 컬럼
    FROM TABLE_A INNER JOIN TABLE_B ON (조건구문);



LEFT OUTER JOIN


  • LEFT JOIN 이라 부르기도 함
  • SELECT 컬럼
    FROM TABLE_A LEFT JOIN TABLE_B ON (조건구문);
    • TABLE_A 모두 반환
    • TABLE_B 조건 구문에 일치하는 데이터만 반환(TABLE_A와 공통부)



RIGHT OUTER JOIN


  • RIGHT JOIN 이라 부르기도 함
  • SELECT 컬럼
    FROM TABLE_A RIGHT JOIN TABLE_B ON (조건구문);
    • TABLE_B 모두 반환
    • TABLE_A 조건 구문에 일치하는 데이터만 반환(TABLE_B와 공통부)



FULL OUTER JOIN


-FULL JOIN 이라 부르기도 함

  • SELECT 컬럼
    FROM TABLE_A FULL JOIN TABLE_B ON (조건구문);
    • TABLE_A, TABLE_B 모든 데이터 반환



SELF JOIN


  • 같은 테이블끼리 조인
  • SELECT A1.컬럼 A2.컬럼....
    FROM TABLE_A A1 JOIN TABLE_A A2 ON (A1.컬럼= A2.컬럼);



다중 JOIN


  • 여러 개의 조인문을 한번에 사용할 수 있음
  • 다중 JOIN을 사용할때에는 조인의 순서를 지키며 사용해야 함
  • EX) SELF JOIN, 다중 JOIN

    • 자신이 관리하고 있는 사원의 이름, 급여 및 직책명이 어떻게 되는지 검색
    • 매니저 ID = 사원 ID(EMP_ID) 매칭
    • EMPLOYEE E1 매니저 테이블
    • EMPLOYEE E2 관리대상이 되는 사원 테이블
SELECT  E1.MANAGER_ID AS "관리자 ID",
E2.EMP_NAME AS "관리자명", 
E1.EMP_NAME AS "사원명", 
E1.SALARY AS "사원급여", 
J.JOB_NAME AS "직책명"
FROM EMPLOYEE E1
JOIN JOB J ON (E1.JOB_CODE=J.JOB_CODE)
JOIN EMPLOYEE E2 ON (E1.MANAGER_ID = E2.EMP_ID);
profile
개발자로 매일 한 걸음

0개의 댓글