Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발 일기

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

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에서 너무너무 중요하다고 하니 잘 알아두고 숙지해서 활용하도록 하겠습니다~!!

Comments