DQL - JOIN

ㅎㄱㅇ·2024년 1월 29일
0

DB공부

목록 보기
8/14

1. 등가 조인 (내부 조인) (EQUAL JOIN / INNER JOIN)

  • 연결 고리 역할을 하는 컬럼의 값이 일치하는 경우 조회하는 방식
  • 해당 컬럼의 값이 동일하지 않은 경우 조회 대상에서 제외

[ORACLE]

SELECT 컬럼명
FROM 테이블1, 테이블2
WHERE 테이블1.동일한_컬럼 = 테이블2.동일한_컬럼

[ANSI]

SELECT 컬럼명
FROM 테이블1 JOIN 테이블2 ON 컬럼명 = 컬럼명
-- 컬럼명이 동일한 경우 USING 사용 가능
FROM 테이블1 JOIN 테이블2 USING 컬럼명

2. 포괄조인 / 외부조인 (OUTER JOIN)

두 테이블 간에 동일하지 않은 데이터도 포함하여 조회하는 방법

- LEFT JOIN

  • 왼쪽에 작성한 테이블을 기준으로 JOIN
  • 동일하지 않을 때 왼쪽 테이블의 데이터는 모두 조회

[ORACLE]

SELECT 컬럼명
FROM 기준_테이블1(A), 연결할_테이블2(B)
WHERE A컬럼 = B컬럼(+)

[ANSI]

SELECT 컬럼명
FROM 기준_테이블1(A) LEFT [OUTER] JOIN 연결할 테이블(B)
	USING : 컬럼명 같은 경우
	ON : 컬럼명 다른 경우

- RIGHT JOIN

  • 오른쪽에 작성한 테이블을 기준으로 JOIN
  • 동일하지 않을 때 오른쪽 테이블의 데이터를 모두 조회

[ORACLE]

SELECT 컬럼명
FROM 기준_테이블1(A), 연결할_테이블2(B)
WHERE A컬럼(+) = B컬럼

[ANSI]

SELECT 컬럼명
FROM 기준_테이블1(A)	RIGHT [OUTER] JOIN 연결할 테이블(B)
	USING : 컬럼명 같은 경우
	ON : 컬럼명 다른 경우

- FULL JOIN

  • A,B 테이블 모두에서 동일하지 않은 데이터들을 다 조회

ORACLE 전용 구문에서는 왼쪽 또는 오른쪽 기준으로만 포괄 조인이 가능
FULL OUTER JOIN 불가

[ANSI]

SELECT 컬럼명
FROM 기준_테이블1(A) FULL [OUTER] JOIN 연결할 테이블(B)
	USING : 컬럼명 같은 경우
	ON : 컬럼명 다른 경우

3. 비등가 조인 (NON EQULA JOIN)

  • 테이블을 연결하여 조회할 때 =를 사용하지 않는 조인문
  • 지정한 컬럼 값이 일치하는 경우가 아닌 값의 범위에 포함되는 행들을 연결하는 방식

[ORACLE]

SELECT EMP_NAME, SALARY, SAL_LEVEL
FROM EMPLOYEE, SAL_GRADE
WHERE SALARY BETWEEN MIN_SAL AND MAX_SAL

[ANSI]
JOIN ~ ON 구문만 사용 가능

SELECT EMP_NAME, SALARY, SAL_LEVEL
FROM EMPLOYEE JOIN SAL_GRADE ON (SALARY BETWEEN MIN_SAL AND MAX_SAL)

4. 자체 조인 / 셀프 조인

같은 테이블을 다시 한번 조인하는 경우

SELECT 컬럼명
FROM 테이블(A) a, 테이블(A) b
WHERE a.컬럼명 = b.컬럼명

5. 다중 조인

2 개 이상의 테이블을 연결하는 방식

0개의 댓글