SQL

SQL의 핵심! JOIN 알아보기(ORACLE JOIN, ANSI JOIN)

개발 일기 2021. 7. 11. 22:58

안녕하세요!

 

오늘은 SQL을 배우며 굉~~~장히 많이 사용하는 JOIN(조인)에 대해 공부 해보겠습니다.

 

1. JOIN(조인) 이란?

 - 검색하고자 하는 컬럼이 한 개의 테이블이 아닌, 여러 개의 테이블에 존재하는 경우에 사용됨

 

 

2. JOIN(조인)의 종류

 1) ORACLE 조인 (Oracle 8i)

  - where 조건을 조건 값을 주고 조인을 진행 함

 

    - Cartesian Product

      -> 첫번째 테이블의 모든 행과 두번째 테이블의 모든 행들이 JOIN 된다. (조인 결과는 데이터로 유용하지 않다)

emp 테이블과 dept 테이블을 Cartesian Product(곱집합) 한 결과 모든 행들을 JOIN 시킴

 

    - Equi-Join

      -> PK와 FK가 정확하게 일치하는 경우에만 검색되는 방식

emp 테이블의 deptno(=FK)와 dept 테이블의 deptno(PK)를 where 구문을 통해 동일한 조건으로 검색

 

    - Non-EquiJoin

      -> 정확하게 일치하는 경우가 아닌 조인 방식

salgrade 테이블의 losal, hisal을 emp 테이블의 sal과 일치하지 않아도 비교를 통해 해당 범위에 grade 값 지정

 

 

    - Outer-Join

      -> 조인 조건에 만족하지 않은, 누락된 행까지 포함하여 출력

(+)를 적음으로써 dept(부서정보) 테이블에 있으나 emp(사원정보)테이블과 조인 조건에 만족하지 않는 15~17번 항목도 노출됨

 

    - Self-Join

      -> 특정 테이블 자신을 자신이 Join하는 방법

emp 테이블 e와 emp 테이블 m이 조인이 되고 emp 테이블 내에서 조인되어 있는 mgr(매니져번호)로 체크

 

 2) ANSI JOIN 조인 (SQL:1999)

  - Join의 형식이 FROM 절에서 지정됨

  - Join 조건이 WHERE 절이 아닌 ON절에서 명시

 

    - Cross Join

      -> cartesian product와 동일

ORACLE 조인의 cartesian product와 동일 양 테이블의 모든 행을 JOIN 시킴

    - Natural Join

      -> Equi-Join과 동일, 같은 이름을 가진 컬럼에 기반

'natural inner join'을 통해 emp 테이블과 dept 테이블의 이름이 서로 같은 deptno를 기준으로 Join 함

 

    - Join ~ on

      -> on 뒤에 조건을 붙히는 ANSI-JOIN의 메인

두 코딩의 결과같은 동일함, join 구문을 통해 emp와 dept를 조인 한 뒤 on~ 조건문을 사용 후 where 조건을 주어도 되고, and를 사용해도 됨

 

    - Outer Join

ORACLE JOIN의 Outer join과 동일 다만, (+)표기가 아닌 right, leff를 직접 표기함

 

    - Self Join

ORACLE JOIN의 Self Join과 동일 다만 on~ 을 사용하여 조건을 기재함

 

 

오늘은 SQL의 JOIN과 관련된 기본적인 부분을 알아보았습니다.

 

JOIN은 SQL에서 너무너무 중요하다고 하니 잘 알아두고 숙지해서 활용하도록 하겠습니다~!!