hyeonga_code

Database_27_ANSI JOIN_조인 함수 Natural JOIN 본문

Oracle Database

Database_27_ANSI JOIN_조인 함수 Natural JOIN

hyeonga 2023. 7. 30. 05:59
반응형

-- 조인_JOIN
    -- 데이터베이스에서 여러 테이블의 데이터가 필요한 경우 조인 조건을 사용합니다.
    -- 서로 대응되는 열에 존재하는 공통 값에 따라 한 테이블의 행을 다른 테이블의 행에 조인할 수 있습니다.
    -- 매칭되는 컬럼이 조회 데이터에 포함되어 있지 않아도 무관합니다.


        -- NATURAL JOIN
            -- 두 테이블에서 동일한 이름을 가진 모든 열을 기준으로 합니다.
            -- 두 테이블의 일치하는 모든 열에서 값은 값을 가진 행을 선택합니다.
            -- 동일한 이름을 가진 열의 데이터 유형이 서로 다를 경우 오류가 반환됩니다.
SELECT department_id DP, department_name, 
               location_id LO, city, state_province
FROM departments NATURAL JOIN locations;
    /*
        DP DP_NAME          LO      CITY                       STATE_PRO
    ---------------------------------------------------------------------------------------
    10     Administration     1700     Seattle                         Washington               
    20     Marketing            1800     Toronto                        Ontario                  
    50     Shipping              1500     South San Francisco  California               
    60     IT                         1400     Southlake                   Texas                    
    80     Sales                   2500     Oxford                       Oxford                   
    90     Executive             1700     Seattle                       Washington               
   110     Accounting          1700     Seattle                       Washington               
   190     Contracting         1700     Seattle                       Washington               
    10     Administration      1700     Seattle                       Washington               
    20     Marketing             1800     Toronto                      Ontario                  
    50     Shipping               1500     South San Francisco California               
    60     IT                          1400     Southlake                  Texas                    
    80     Sales                    2500     Oxford                       Oxford                   
    90     Executive             1700     Seattle                       Washington               
   110     Accounting           1700     Seattle                       Washington               
   190     Contracting          1700     Seattle                       Washington        
    */


    -- natural join의 한계
        -- 동일한 컬럼 이름이 두 개 이상 있는 경우 데이터 조회에 오류가 생길 수 있습니다.
SELECT employee_id, last_name, job_id, 
            department_id, department_name
FROM employees NATURAL JOIN departments;
    /*
    EM_ID  LAST_NAME   JOB_ID     DP_ID    DP_NAME  
    --------------------------------------------------------------------------------
    101     Kochhar          AD_VP             90         Executive    
    102     De Haan         AD_VP             90         Executive    
    104     Ernst               IT_PROG         60         IT    
    107     Lorentz           IT_PROG         60         IT    
    141     Rajs                ST_CLERK      50         Shipping    
    142     Davies            ST_CLERK      50         Shipping    
    143     Matos              ST_CLERK      50        Shipping    
    144     Vargas            ST_CLERK      50         Shipping    
    174     Abel                SA_REP           80         Sales    
    176     Taylor             SA_REP            80        Sales    
    202     Fay                 MK_REP            20        Marketing    
    206     Gietz               AC_ACCOUNT  110      Accounting    
    */



반응형