본문 바로가기
BackEnd/DB, SQL

SQL 12편: 조인 (집합 연산자와 조인의 차이점, WHERE절 조인, SQL-99 표준 문법 조인)

by summer_light 2021. 12. 27.

집합 연산자와 조인의 차이점

- 집합 연산자를 사용한 결과는 두 개 이상의 SELECT문의 결과 값을 세로로 연결한 것. 즉 행이 늘어나는 것
- 조인을 사용한 결과는 두 개 이상의 테이블 데이터를 가로로 연결한 것. 즉 열이 늘어나는 것

FROM절에는 여러 개 테이블을 지정하는 것이 가능하다.
꼭 테이블이 아니더라도 테이블 형태이면 모두 FROM절에 지정할 수 있다. (뷰, 서브쿼리 등)
FROM절에 명시한 각 테이블을 구성하는 행이 모든 경우의 수(데카르트 곱)로 출력된다.
그렇기 때문에 이 모든 경우의 수들 중에서 적절한 출력 행을 선정하는 조건식을 담은 WHERE 절이 필요하다.

다른 테이블의 동일한 열 이름 구분하기

여러 테이블에 동일한 열이 들어 있는 경우, 구분을 위해 아래와 같이 표현한다.

SELECT 테이블 이름.열 이름

 

테이블의 별칭 설정

다음과 같이 테이블의 별칭을 설정할 수 있다.

FROM 테이블1 별칭1, 테이블2 별칭2

이 경우 SELECT문에서 열을 선택해올 때 다음과 같이 별칭을 이용할 수 있다.

SELECT 별칭1.열 이름




WHERE절을 이용한 조인

등가 조인

등가 조인 = 내부 조인 = 단순 조인.
여러 테이블의 열 이름이 같을 때는, 어느 테이블에 속해 있는 열인지 명시해야 한다.

비등가 조인

SELECT * FROM EMP E, SALGRADE S WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL;

 

자체 조인

현재 행의 A열 값을 B열 값으로 사용하고 있는 데이터를 연결해주는 방식
FROM절에 같은 테이블을 여러 번 명시하되 테이블의 별칭만 다르게 지정하는 방식
값이 NULL이면 조인 후 제외된다.

외부 조인

값이 NULL일 때 조인 대상에서 제외되는 단점을 커버할 수 있는 방법이다.

왼쪽 외부 조인 WHERE A = B(+)
오른쪽 외부 조인 WHERE A(+) = B




SQL-99 표준 문법 조인

FROM 절에 조인 키워드를 사용하는 형태이다.

등가 조인 1. NATURAL JOIN

이름과 자료형이 같은 열을 찾은 후 그 열을 기준으로 등가 조인을 해 주는 방식.
기존 등가 조인과는 다르게 조인 기준 열인 DEPTNO를 SELECT절에 명시할 때 테이블 이름을 붙이면 안 되는 특성이 있다.

등가 조인 2. JOIN ~ USING

NATURAL JOIN과는 다르게 조인 기준으로 사용할 열을 명시하여 사용

등가 조인 3. JOIN ~ ON

가장 범용성 있는 방식.
기존 WHERE절에 있었던 조인 조건식을 ON 키워드 옆에 작성
조인 기준 조건식은 ON에 명시하고, 그 밖의 출력 행을 걸러내기 위해 WHERE 조건식을 따로 사용하는 방식.
FROM TABLE1 JOIN TABLE2 ON (조인 조건식)

외부 조인 OUTER JOIN

왼쪽 외부 조인 WHERE TABLE1.COL1 = TABLE2.COL1(+)
FROM TABLE1 LEFT OUTER JOIN TABLE2 ON (조인 조건식)
오른쪽 외부 조인 WHERE TABLE1.COL1(+) = TABLE2.COL1
FROM TABLE1 RIGHT OUTER JOIN TABLE2 ON (조인 조건식)
전체 외부 조인 UNION 집합 연산자를 활용해야 함
FROM TABLE1 FULL OUTER JOIN TABLE2 ON (조인 조건식)

 

세 개 이상의 테이블을 조인할 때

FROM 절에 조인 관련 내용을 작성해야 하는 SQL-99방식에서는 테이블의 개수가 두 개를 넘어 갈 때 WHERE절의 AND를 쓸 수 없기 때문에 다음과 같은 방식으로 조인해야 한다.
FROM TABLE1 JOIN TABLE2 ON (조건식) JOIN TABLE3 ON (조건식)

댓글