표준 조인

2023. 10. 7. 16:36BOOKS/SQL 전문가 가이드

 
SQL 전문가 가이드
SQL 전문가 가이드는 SQL 자격검정 대비 수험서로 데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 최적의 성능을 발휘할 수 있도록 SQL을 작성하고 데이터베이스 프로그램이나 응용 소프트웨어의 성능을 최적화하고 데이터베이스 개체의 설계와 구현을 위해 데이터 모델링의 이해, SQL기본 및 활용, SQL 고급 활용 및 튜닝 등의 실무가이드로 구성되어 있다.
저자
한국데이터산업진흥원
출판
한국데이터산업진흥원
출판일
2021.03.15

1. FROM절 조인 형태

ANSI/ISO SQL에서 표현하는 FROM절 조인 형태

  • INNER JOIN
  • NATURAL JOIN
  • USING 조건절
  • ON 조건절
  • CROSS JOIN
  • OUTER JOIN

2. INNER JOIN

  • 조인 조건을 만족하는 행들만 반환
  • USING 조건절이나 ON조건절을 필수적으로 사용해야함
  • INNER은 생략 가능
SELECT 테이블1.칼럼명, 테이블2.칼럼명,...
FROM 테이블1 INNER JOIN 테이블2
ON 테이블2.칼럼명 = 테이블1.칼럼명;
SELECT 칼럼명, 테이블2.칼럼명,...
FROM 테이블1 INNER JOIN 테이블2
USING(칼럼명);

3. NATURAL JOIN

  • 두 테이블 간 동일한 이름을 갖는 모든 칼럼들에 대해 EQUI JOIN 수행
  • USING 조건절, ON 조건절, WHERE절에서 조인 조건을 정의할 수 없다.
  • SQL Server에서 지원 X
  • 조인에 사용된 칼럼들은 같은 데이터 유형이어야 함
  • ALIAS나 테이블 명 같은 접두사를 붙일 수 없음
  • 조인이 되는 테이블의 데이터 성격(도메인)과 칼럼명 등이 동일해야 하는 제약 조건이 있음
  • 칼럼 순서를 지정하지 않으면 기준이 되는 칼럼들(조인되는 칼럼)이 다른 칼럼보다 먼저 출력됨
  • 조인에 사용된 같은 이름의 칼럼을 하나로 처리
SELECT 테이블1.칼럼명, 테이블2.칼럼명,...
FROM 테이블1 NATURAL JOIN 테이블2;

4. USING 조건절

  • USING 조건절을 이용하면 같은 이름을 가진 칼럼들 중에서 원하는 칼럼에 대해서만 선택적으로 EQUI JOIN을 할 수 있다.
  • SQL Server에서는 지원 X
  • USING JOIN에 사용된 같은 이름의 칼럼을 하나로 처리
  • 조인 칼럼에 대해서 ALIAS나 테이블 이름과 같은 접두사를 붙일 수 없음
SELECT 칼럼명, 테이블2.칼럼명,...
FROM 테이블1 JOIN 테이블2
USING(칼럼명);

5. ON 조건절

  • 임의의 조인 조건을 지정하거나 이름이 다른 칼럼명을 조인 조건으로 사용하거나 조인 칼럼을 명시하기 위해 사용
  • 괄호는 옵션
  • 이름이 같은 칼럼들에 대해 ALIAS나 테이블 명과 같은 접두사를 명확하게 지정해주어야 함
  • WHERE절과 혼용 가능 → ON은 조인 조건, WHERE은 검색 조건

다중테이블 조인

SELECT 테이블1.칼럼명, 테이블2.칼럼명,테이블3.칼럼명,...
FROM 테이블1 JOIN 테이블2
ON 테이블2.칼럼명 = 테이블1.칼럼명
	JOIN 테이블3
ON 테이블3.칼럼명 = 테이블2.칼럼명;

6. CROSS JOIN

  • 테이블 간 조인 조건이 없는 경우 생길 수 있는 모든 데이터의 조합
  • M*N건의 데이터 조합 발생
  • WHERE절에 조인 조건 추가 가능하지만 INNER JOIN과 같은 결과를 얻기 때문에 불필요
SELECT 테이블1.칼럼명, 테이블2.칼럼명,...
FROM 테이블1 CROSS JOIN 테이블2;

7. OUTER JOIN

  • USING이나 ON 조건절 필수

LEFT OUTER JOIN

  • 조인 수행시 좌측 테이블 데이터를 먼저 읽은 후 우측 테이블에서 조인 대상 데이터를 읽어옴
  • 좌측 테이블이 기준
  • 우측 테이블에서 조인 조건 만족하는 값 없을 경우 NULL값으로 채움
  • OUTER 생략 가능
SELECT 테이블1.칼럼명, 테이블2.칼럼명,...
FROM 테이블1 LEFT OUTER JOIN 테이블2
ON 테이블2.칼럼명 = 테이블1.칼럼명;

RIGHT OUTER JOIN

  • 우측 테이블이 기준
  • 좌측 테이블에서 조인 조건 만족하는 값 없을 경우 NULL값으로 채움
  • OUTER 생략 가능
SELECT 테이블1.칼럼명, 테이블2.칼럼명,...
FROM 테이블1 RIGHT OUTER JOIN 테이블2
ON 테이블2.칼럼명 = 테이블1.칼럼명;

FULL OUTER JOIN

  • 양쪽 테이블 모두 기준이 됨
  • RIGHT OUTER JOIN과 LEFT OUTER JOIN의 결과를 합집합으로 처리한 결과와 동일
  • 조인에 성공한 행들은 한번만 표시(중복X)
  • OUTER 생략 가능
    SELECT 테이블1.칼럼명, 테이블2.칼럼명,...
    FROM 테이블1 FULL OUTER JOIN 테이블2
    ON 테이블2.칼럼명 = 테이블1.칼럼명;
    ​

 

'BOOKS > SQL 전문가 가이드' 카테고리의 다른 글

집합 연산자  (0) 2023.10.07
서브쿼리  (0) 2023.10.07
조인  (0) 2023.10.07
ORDER BY절  (0) 2023.10.07
GROUP BY, HAVING절  (0) 2023.10.07