[SQLD]「2」(2.3) JOIN, STANDARD JOIN

728x90

[SQLD]2」(2.3) JOIN, STANDARD JOIN

「1」 데이터 모델링의 이해

> 「2」 SQL 기본 / 활용

「3」 관리 구문

 

1. SELECT 문

2. 다양한 함수

3. WHERE 절

4. GROUP BY 절, HAVING 절

5. ORDER BY 절

> 6. JOIN

> 7. STANDARD JOIN

 

6. JOIN

EQUI JOIN

Equal(=) 조건으로 JOIN

√. JOIN 되는 두 테이블에 모두 존재하는 칼럼일 경우, 칼럼명 앞에 테이블명 / ALIAS 명시

SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4, ...
  FROM 테이블명1 A,
       테이블명2 B
 WHERE A.공통칼럼명 = B.공통칼럼명;

 

Non EQUI JOIN

Equal(=) 조건이 아닌 다른 조건(BETWEEN, >, >=, <, <=)으로 JOIN

SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4, ...
  FROM 테이블명1 A,
       테이블명2 B
 WHERE A.칼럼명 BETWEEN B.칼럼명 AND B.칼럼명;

 

3개 이상 TABLE JOIN

3개 이상의 테이블을 JOIN

√. EQUI JOIN과 Non EQUI JOIN은 하나의 쿼리에서 같이 사용 가능

SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4, ..., C.칼럼명5, ...
  FROM 테이블명1 A,
       테이블명2 B,
       테이블명3 C,
 WHERE A.공통칼럼명 = B.공통칼럼명
   AND B.칼럼명 BETWEEN C.칼럼명 AND C.칼럼명;

 

7. STANDARD JOIN

STANDARD JOIN

⸰ SQL 문법의 호환성 이슈로 정한 표준 JOIN 쿼리

⸰ ==ANSI JOIN,표준 조인

 

INNER JOIN

⸰ JOIN 조건에 충족하는 데이터만 출력

⸰ ON 절을 사용하여 조건을 작성

SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4
  FROM 테이블명1 A INNER JOIN 테이블명2 B
    ON A.공통칼럼명 = B.공통칼럼명;

 

OUTER JOIN

⸰ JOIN 조건에 맞지 않는 행들도 출력

√. 모든 행이 출력되는 테이블의 반대편 테이블 옆에 (+) 기호를 붙여 작성 가능 (좌변 or 우변 중 하나만 표기)

√. ON 절 조건으로 JOIN 후, 최종적으로 WHERE 절 조건에 의해 필터링되어 출력

  -LEFT OUTER JOIN

    : 왼쪽 테이블의 데이터는 무조건 출력

    : 오른쪽 테이블의 JOIN 되는 데이터가 없으면 오른쪽 테이블의 칼럼값을 NULL 로 출력

SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4
  FROM 테이블명1 A LEFT OUTER JOIN 테이블명2 B
    ON A.공통칼럼명 = B.공통칼럼명;

 

  -RIGHT OUTER JOIN

    : 오른쪽 테이블의 데이터는 무조건 출력

    : 왼쪽 테이블의 JOIN 되는 데이터가 없으면 왼쪽 테이블의 칼럼값을 NULL 로 출력

SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4
  FROM 테이블명1 A RIGHT OUTER JOIN 테이블명2 B
    ON A.공통칼럼명 = B.공통칼럼명;

 

  -FULL OUTER JOIN

    : 왼쪽, 오른쪽 테이블의 데이터가 모두 출력

    : LEFT OUTER JOIN과 RIGHT OUTER JOIN의 합집합 (중복값 제거)

SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4
  FROM 테이블명1 A FULL OUTER JOIN 테이블명2 B
    ON A.공통칼럼명 = B.공통칼럼명;

 

NATURAL JOIN

⸰ 두 테이블에서 공통 칼럼에 모두 동일한 데이터를 가지고 있을 경우 JOIN

⸰ USING 절을 이용하여, 동일한 데이터를 가진 공통 칼럼중 원하는 칼럼만 비교하여 EQUI JOIN 처럼 사용 가능

√. SELECT 절에서 공통 칼럼 or USING 절로 정의된 칼럼 앞에 테이블명 / ALIAS 금지

√. ON 절 사용 불가

SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4
  FROM 테이블명1 A JOIN 테이블명2 B
 USING (공통칼럼명1, 공통칼럼명2, ...);

 

CROSS JOIN

두 테이블 사이에 JOIN 조건이 없는 경우, 모든 행을 조합하여 출력

==Cartesian Product

√. CROSS JOIN 후 행들의 수는 테이블 A의 행의 개수 × 테이블 B의 행의 개수

SELECT A.칼럼명1, A.칼럼명2, ..., B.칼럼명3, B.칼럼명4
  FROM 테이블명1 A CROSS JOIN 테이블명2 B;

 

 

 

 

 

 

유선배 SQLD 과외노트

728x90