ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL활용
    공부/SQL 2021. 10. 28. 01:39
    728x90

    조인(JOIN)

    1. EQUI조인(등가조인) - 교집합

     

    조인은 여러 개의 릴레이션을 사용해서 새로운 릴레이션을 만드는 과정

    조인의 가장 기본은 교집합을 만드는 것

    교집합

     

     

    EMP 테이블

    사원번호 이름 나이 급여 부서코드
    1000 달콤 20 10,000 001
    1001 고소 22 20,000 002
    1002 야미 25 25,000 002

    DEPT 테이블

    부서코드 부서명
    001 인사팀
    002 총무팀
    003 IT팀

    부서코드 간 EQUI Join(두 개의 릴레이션을 결합)

     

    SELECT * FORM EMP, DEPT
    WHERE EMP.DEPTNO = DEPT.DEPTNO;

    * EQUI 조인은 "="을 사용해서 두 개의 테이블 연결

     

    ② INNER JOIN

    INNER JOIN은 ON문을 사용해서 테이블을 연결

     

    SELECT * FROM EMP INNER JOIN DEPT
    ON EMP.DEPTNO = DEPT.DEPTNO;

     

    조인문에 추가 조건 및 정렬을 할 수 있다.

    예시)

    SELECT * FROM EMP INNER JOIN DEPT
    ON EMP.DEPTNO = DEPT.DEPTNO
    AND EMP.ENAME LIKE '임%'
    ORDER BY ENAME;

     

    ∴ 실행 계획을 확인해서 내부적으로 두 개의 테이블을 어떻게 연결했는지 확인해보면

    DEPT 테이블 - EMP 테이블 전체 읽고 (TABLE ACCESS FULL)해시 함수를 사용해서 연결

     

    ③ INTERSECT 연산

    두 개 테이블에서 공통된 값을 조회

    SELECT DEPTNO FROM EMP
    INTERSECT
    SELECT DEPTNO FROM DEPT;

     

     

    2. Non-EQUI JOIN(비등가 조인)

    두 개의 테이블을 조인하는 경우 "="을 사용하지 않고 ">", "<", ">=", "<=" 등을 사용

    즉, 정확하게 일치하지 않는 것을 조인

     

     

    3. OUTER JOIN

    두 개의 테이블 간에 교집합(EQUI JOIN)을 조회하고 한쪽 테이블에만 있는 데이터도 포함시켜서 조회

    왼쪽 테이블에만 있는 행도 포함하면 LEFT OUTER JOIN 오른쪽 테이블에만 있는 행도 포함하면 RIGHT OUTER JOIN

    FULL OUTER JOIN은 LEFT, RIGHT OUTER JOIN 모두 하는 것

     

    *Oracle DB에서는 OUTER JOIN을 할 때 "(+)" 기호를 사용해서 할 수 있음.

    Oracle OUTER JOIN 예시

    SELECT * FROM DEPT, EMP
    WHERE EMP.DEPTNO (+) = DEPT.DEPTNO;

     

                                     LEFT OUTER JOIN

    부서명 부서코드   부서코드 이름
    인사팀 10   10 달콤
    총무팀 20   20 새콤
    IT팀 30   30 매콤
     운영팀 40   NULL  

     

    SELECT * FROM DEPT LEFT OUTER JOIN EMP
    ON EMP.DEPTNO = DEPT.DEPTNO;

     

                               

     

     

                                      RIGHT OUTER JOIN

    부서명 관리자   사원번호 이름
    인사팀 10   1001 달콤
    총무팀 20   1002 새콤
      NULL   1003 매콤
      NULL   1004 쿰쿰
    SELECT * FROM DEPT RIGHT OUTER JOIN EMP
    ON EMP.DEPTNO = DEPT.DEPTNO;

     

     

    4. CROSS JOIN

    조인 조건구 없이 2개의 테이블을 하나로 조인

    조인구가 없기 때문에 카테시안 곱이 발생

    FROM절에 CROSS JOIN구를 사용

     

    SELECT * FROM EMP CROSS JOIN DEPT;

     

    행 X 행 = JOIN수

    EX) EMP 테이블에 10개의 행 DEPT 테이블에 행이 2개면 조회되는 행의 수는?

    답 : 10 X 2 = 20개

     

     

    이상 몇 가지의 JOIN문에 대해서 공부를 해봤다

    크게 어려운건 없는듯..!

    SQLD  D-DAY 23

    728x90

    댓글

Designed by Tistory.