본문 바로가기
개념공부/데이터베이스

DB Join

by 29살아저씨 2021. 9. 7.
반응형

- 조인은 테이블의 스키마 파악이 정확하게 이루어 져야한다. 

어떤 테이블의 어떤 컬럼을 기준으로 해서 조회할지에 대해 먼저 생각하고 계속 연결하면 Join이 된다.

 

Join

- 두개 이상의 테이블을 연결해서 Query(질의)하는 것

- 종류

   1. 데이터 추출되는 것에 따라서 

       Inner Join

          - 조인을 위해 사용하는 비교조건(조인조건)에 맞는 데이터만 조회

          => 조인 조건에 맞지 않는 데이터는 조회되지 않는다.

          - join할때 outer join으로 표시하지 않으면 기본적으로 inner join으로 조회된다.

      Outer Join

          - 조인 조건에 맞지 않는 데이터도 조회된다.

   2. 비교 조건에 따라서

       Equi Join

          - 비교하는 두 컬럼의 데이터가 정확하게 일치할 경우 조회됨.

          => 비교 연산자로 = 를 사용한다.

       Non Equi Join

          - join 조건으로 >, >=, <, <=, !=

   3. Join하는 테이블 종류에 따라서 

       Self join

          - join할 테이블이 다른 테이블이 아닌 self(자기 자신, 한개의 테이블로 조인) 

          - 테이블과 데이터를 구별하기 위해 반드시 alias를 사용해야 한다.

 

***** Natural Join

       - join 조건을 직접 정하지 않고 join할 테이블의 동일한 컬럼명으로 자동 조인

       - 장점 : 조인 조건을 주지 않아도 되서 query가 간단하다.

       - 단점 : 동일한 컬럼명이 없으면 조인이 안됨, 다른 컬럼과 join할 수 없음.

 

***** 카타시안 곱

       - 조인 조건을 생략했을 때 두 테이블의 모든 row를 연결한 결과가 조회된다.

       - N*M의 수만큼 행이 조회된다.

 

 

* * 

Inner Join

- 벤더 전용(RDBMS는 inner join에 대한 벤더 전용 query가 같다)

   select [All | Distinct] * |{컬럼명, expresstion} [as alias]

   from  테이블명 [alias], 조인할테이블명 [alias], ...

   where 조인 조건    // where가 없으면 카타시안곱이 되서 모든 행이 조회된다.

   [group by 컬럼명, .. [having 조건]]

   [order by 컬럼명, ..]

 

- Ansi query

   select [All | Distinct] * |{컬럼명, expresstion} [as alias]

   from  테이블명 [alias], 조인할테이블명 [alias], ...

   join   조인 할 테이블 명 [alias]

   [using | on] 조인 조건  

   where 조인 조건    // where가 없으면 카타시안곱이 되서 모든 행이 조회된다.

   [group by 컬럼명, .. [having 조건]]

   [order by 컬럼명, ..]

 

// using(컬럼명)

   - 조인할 두 테이블의 컬럼이 동일한 경우

   - 비교조건은 = 이다.

// on 비교조건

   - 조인할 두 테이블의 컬럼명이 동일하지 않아도 사용할 수 있다.

   - 비교 조건은 마음대로 작성하면 된다.

 

 

3. Outer Join (웬만하면 master table을 기준으로 해서 left join을 해라)

- left [outer] join : 왼쪽 테이블의 데이터는 모두 다 나오고 join 조건에 맞는 데이터를 오른쪽 테이블에서 추출해서                              연결

 

- right [outer] join : 오른쪽 테이블의 데이터는 모두 다 나오고 join 조건에 맞는 데이터를 왼쪽 테이블에서 추출해서                              연결

 

- full [outer] join : 두 테이블의 데이터를 모두 연결

반응형

'개념공부 > 데이터베이스' 카테고리의 다른 글

JDBC LIKE  (0) 2021.09.10
DB SubQuery  (0) 2021.09.08

댓글