Join 이란?

Back-End/Data Base 2020. 1. 23. 11:19
728x90
반응형

- JOIN -

 

하나이상의 테이블로 부터 연관된 테이블(컬럼)을 검색할 수 있는 방법이다.

 

또한 JOIN에서 ON과 WHERE의 차이점은 JOIN하는 범위가 다르다.

 

또한 PK(PrimaryKEY) & FK(Foreign KEY)의 값에 연관에 의해 보통 JOIN이 성립하지만,

 

어떤 경우에는 이러한 PK,FK 관계가 없어도 논리적인 값들의 연관만으로 JOIN이 성립되기도 한다.

 

 

- JOIN의 종류 -

 

- EQUIJOIN : column 간의 값들이 서로 정확히 일치하는 경우에 사용, 일반적으로 PK, FK 관계에 의함

 

- NON-EQUIJOIN : 한 컬럼의 값이 다른 컬럼의 값과 정확히 일치하지 않는 경우에 사용

 

- OUTER JOIN : JOIN 조건을 만족하지 않는 경우에도 모든 행들을 다 보려는 경우에 사용

 

- SELF JOIN : 같은 테이블에 있는 행들을 JOIN 하고자 하는 경우에 사용

 

JOIN에 대한 조건이 생략되거나 잘못 기술되면, 한 테이블에 있는 모든 행들과 JOIN되고,

 

이런 결과를 Cartesian product (모든 케이스가 다 JOIN 되는 것) 이라고 하는데, 이런 상황을 방지하기 위해서는 반드시 JOIN시에 WHERE를 써야 한다.

 

 

 

1. EQUIJOIN

 

서로 다른 테이블에서 같은 값을 이용해 데이터를 출력한다.

 

EQUIJOIN(INNER JOIN)의 기본 구조

 

 

  SELECT 테이블명.컬럼명, 테이블명.컬럼명,...

 

  FROM 테이블1, 테이블2

 

  WHERE 테이블1.컬럼1 = 테이블2.컬럼2;

 

 

 

 

2. NON-EQUIJOIN

 

연산자 외에 다른 연산자를 사용하여 조인하는 방법이다.

 

즉 한 컬럼의 값이 다른 컬럼의 값과 정확히 일치하지 않는 경우 '=' 연산자 외의 다른 연산자를 사용하여

 

JOIN하는 방법을 말한다. 즉, 정확한 값의 비교가 아니라 값의 범위를 비교해야 할 때 사용한다.

 

 

  SELECT 테이블.컬럼명, 테이블.컬럼명

 

  FROM 테이블1, 테이블2

 

  WHERE 테이블1.컬럼 BETWEEN 테이블2.컬럼 AND 테이블2.컬럼

 

 

 

 

3. OUTER JOIN

 

OUTER JOIN을 하는 경우에는 (+) 연산자를 사용한다.

 

(+)를 사용하는 위치는 JOIN할 데이터가 부족한 쪽 (즉, 상대 테이블과 비교할 데이터가 존재하지 않는쪽) 에 위치시킨다.

 

(+)는 WHERE절에서 비교연산자 기준으로 좌변 또는 우변의 어느 한쪽에 위치 시킨다.

 

OUTER JOIN에서 IN이나 OR을 사용할 수 없다.

 

 

 

4. SELF JOIN

 

하나의 테이블을 마치 여러개인 것처럼 사용할 수 있다.

 

반드시 테이블에 대한 ALIAS를 각기 다르게 지정해야 한다.

 

칼럼의 이름 앞에 반드시 테이블의 ALIAS를 붙여야 한다.

 

SELF JOIN의 횟수는 제한되어 있지 않다.

 

 

 

SET 연산자의 종류

 

UNION : 각 QUERY 결과의 합집합

 

UNION ALL : 각 QUERY 결과의 합집합에 공통부분을 더함

 

INTERSECT : 각 QUERY결과의 교집합

 

MINUS : 첫번째 QUERY 결과와 두번째 QUERY 결과의 차집합

 

 

 

  SET연산자의 기본적인 구조

 

  SELECT 컬럼1, 컬럼2 ...

 

  FROM 테이블 1...

 

SET 연산자

 

  SELECT 컬럼1', 컬럼2 ...

 

  FROM 테이블2...

 

  ORDER BY ;

 

 

 

첫번째 SELECT 구문에서 기술된 컬럼들과 두번째 SELECT 구문에서 기술된 컬럼들은 그 개수와 타입이 일치해야 한다.

 

FROM절 뒤에 기술된 테이블은 서로 다를 수도, 같은 수도 있다.

 

컬럼 HEADING는 첫번째 SELECT 구문의 컬럼명이 출력된다.

 

ORDER BY 절은 마지막에 한번만 기술한다.

 

 

출처 : https://songc92.tistory.com/43

 

728x90
반응형
: