ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Oracle - CROSS JOIN / NON_EQUI JOIN / SELF JOIN
    데이터베이스/Oracle 2020. 11. 13. 15:47
    728x90
    반응형

    CROSS JOIN / NON_EQUI JOIN / SELF JOIN

    CROSS JOIN / NON_EQUI JOIN / SELF JOIN를 알아보자.

     

     

    CROSS JOIN

    CROSS JOIN이란 교차 조인, 혹은  카테시안 곱(Cartesian Product)이라고도 하며 조인되는 테이블의 각 행들이

    모두 매핑된 데이터가 검색되는 조인 방법이다.

    검색되는 데이터 수는 '행의 컬럼 수 * 또 다른 행의 컬럼 수' 로 나타난다.

     

    [ CORSS JOIN 예시 ] 

    SELECT EMP_NAME, DEPT_TITLE
    FROM EMPLOYEE
    CROSS JOIN DEPARTMENT;

     

    NON_EQUI JOIN

    NON_EQUI JOIN이란 비등가 조인이라고도 불리며 '=' (등호)를 사용하지 않는 조인문으로 지정한 컬럼 값이 일치하는 경우가 아닌 값 범위에 포함되는 행들을 연결하는 방식이다.

     

    NON_EQUI JOIN 예시 ]

    SELECT EMP_NAME, SALARY, E.SAL_LEVEL
    FROM EMPLOYEE E
    JOIN SAL_GRADE S ON (SALARY BETWEEN MIN_SAL AND MAX_SAL);

     

     

     

     

    SELF JOIN

    SELF JOIN이란 두 개 이상의 서로 다른 테이블을 연결하는 것이 아닌 같은 테이블을 조인하는 것이다.

     

    [ SELF JOIN 예시 ]

    SELECT E.EMP_ID, E.EMP_NAME 사원이름, E.DEPT_CODE, E.MANAGER_ID,
    M.EMP_NAME 관리자이름
    FROM EMPLOYEE E, EMPLOYEE M
    WHERE E.MANAGER_ID = M.EMP_ID;

     

     

    다중 JOIN

    다중 JOIN이란 하나 이상의 테이블에서 데이터를 조회하기 위해 사용하고

    수행 결과는 하나의 Result Set으로 나온다.

    다중 조인할때는 조인 순서가 중요하다!! 

     

    [ 다중 JOIN 예시 ]

    SELECT EMP_ID, EMP_NAME, DEPT_CODE, DEPT_TITLE, LOCAL_NAME
    FROM EMPLOYEE
    JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID)
    JOIN LOCATION ON (LOCATION_ID = LOCAL_CODE);

     

    * 조인 순서를 지키지 않았을 때

    SELECT EMP_ID, EMP_NAME, DEPT_CODE, DEPT_TITLE, LOCAL_NAME
    FROM EMPLOYEE
    JOIN LOCATION ON (LOCATION_ID = LOCAL_CODE) 
    JOIN DEPARTMENT ON (DEPT_CODE = DEPT_ID); -- 순서가 잘못되어 에러가 나타난다.

    EMPLOYEE 테이블LOCATION_ID가 없기 때문에

    EMPLOYEE 테이블 LOCAIOTN의 테이블등가조인이 성립되지 않는다.

    728x90
    반응형

    '데이터베이스 > Oracle' 카테고리의 다른 글

    Oracle - 서브쿼리(SUBQUERY) - Part2  (0) 2020.11.16
    Oracle - 서브쿼리(SUBQUERY) - Part 1  (0) 2020.11.16
    Oracle - JOIN  (0) 2020.11.12
    Oracle - GROUP BY 의 ROLLUP과 CUBE  (0) 2020.11.11
    Oracle - ORDER BY / GROUP BY / HAVING  (0) 2020.11.11
Designed by Tistory.