JOIN

2024. 6. 5. 18:27SQL

JOIN
    - 하나 이상의 테이블에서 데이터를 조회하기 위해 사용
    - 수행 결과는 하나의 RESULT SET으로 나옴
    
    - 관계형 데이터베이스에서 SQL을 이용해 테이블 간 관계를 맺는 방법
    - 관계형 데이터베이스는 최소한의 데이터만을 테이블에 담고 있어 원하는 정보를 테이블에서 조회하려면 한 개 이상의 테이블에서 데이터를 읽어와야 하는 경우가 많음.
    이 때, 테이블간 관계를 맺기 위한 연결고리 역할이 필요한데, 두 테이블에서 같은 데이터를 저장하는 컬럼이 연결고리가 됨
    
    등가 조인 : 내부조인(INNER JOIN
                      JOIN USING
                      ON
                     자연조인(NATURAL JOIN)
    
    포괄 조인 : 왼쪽 외부 조인(LEFT OUTER)
                      오른쪽 외부 조인(RIGHT OUTER)
                      전체 외부 조인(FULL OUTER)
    
    자체 조인 : JOIN ON
    
    교차 조인 : CROSS JOIN

 

1. 내부 조인 INNER JOIN

    
    - 연결되는 컬럼의 값이 일치하는 행들만 조인됨
        -> 일치하는 값이 없는 행은 조인에서 제외됨   

 
    - 작성 방법 : ANSI / ORACLE
        1) ANSI 표준 구문
            구문 기준을 정할 때 정의되는 기준
            가장 유명한 표준 : ASCII 코드 (아스키코드)

            SELECT 컬럼명 FROM 테이블명 JOIN 연결하고자하는테이블명 ON (연결컬럼명 = 연결컬럼명)
                  
        2) ORACLE 표준 구문
            FROM절에 ','로 구분해서 합칠 테이블을 기술
            WHERE절에 합치기에 사용할 컬럼명 제시

            SELECT 컬럼명 FROM 테이블명1, 테이블명2, ... WHERE 연결컬럼명 = 연결컬럼명
            
    - 연결에 사용할 두 컬럼명이 다를 경우 -> JOIN ON을 사용

      연결에 사용할 두 컬럼이 같은 경우 -> JOIN USING을 사용
        ORACLE에서는 JOIN ON을 사용하지 않고 WHERE절에 '='를 사용하면 됨

 

   서로 다른 테이블에서 컬럼명과 값이 모두 같을 때는 각각 참조하는 테이블이 무엇인지 작성해줘야함

 

두 개의 테이블이 연결된 상태

 

 

2. 자연조인 NATURAL JOIN 
    - JOIN에 별칭을 설정해서 테이블 표현하기
    - 동일한 타입과 이름을 가진 컬럼이 있는 테이블 간의 조인을 간단히 표현하는 방법
    - 반드시 두 테이블 간에 동일한 컬럼명, 타입을 가진 컬럼이 필요
    - 없을 경우 교차조인이 됨
    
    EMPLOYEE.JOB_CODE (CHAR(2))
    JOB.JOB_CODE (CHAR(2))
    -> 컬럼명, 자료형이 모두 일치해야함 == 자연조인 대상
    
    SELECT 컬럼명, 컬럼명, 컬럼명, ... FROM 테이블명 NATURAL JOIN 테이블명;
    
    - JOIN에 별칭을 설정해서 테이블 표현하기
        JOIN과 FROM에서 테이블을 설정할 때 쿼리를 좀 더 간결하고 읽기 쉽게 만드는 방법
        -> 테이블을 다수 참조할 때 유용
    
    - 사용 방법
        1) SELECT 테이블명1.컬럼명1, 테이블명2.컬럼명2 FROM 테이블명1, 테이블명2
            WHERE 테이블명1.컬럼명1 = 테이블명2.컬럼명2;
            
        2) SELECT A.컬럼명, B.컬럼명 FROM 테이블명1 A, 테이블명2 B WHERE A.컬럼명1 = B.컬럼명;

 

 

3. 외부조인 OUTER JOIN
    - 두 테이블의 지정하는 컬럼값이 일치하지 않는 행도 조인에 포함시킴

 

   1) LEFT [OUTER] JOIN
       - 합치기에 사용한 두 테이블 중에서 왼족 편에 작성된 테이블의 컬럼 수를 기준으로 JOIN

 

   2) RIGHT [OUTER] JOIN
       - 합치기에 사용한 두 테이블 중에서 오른족 편에 작성된 테이블의 컬럼 수를 기준으로 JOIN

 

  3) FULL [OUTER] JOIN
      - 합치기에 사용한 두 테이블 중이 가진 모든 행을 결과에 포함
          -> 오라클에서는 FULL OUTER JOIN 구문 사용 불가

 

LEFT
RIGHT

 

'SQL' 카테고리의 다른 글

트랜잭션  (0) 2024.06.05
SUBQUERY  (0) 2024.06.05
함수 (TO)  (0) 2024.06.05
집합 연산  (1) 2024.06.03
집계 함수(ROLLUP, CUBE)  (0) 2024.06.03