728x90
20221020(목)
- 목차
- 조인의 종류
- ANSI 내부 조인
- ANSI 외부 조인
< 조인이란? >
- 관계형 데이터베이스에서 SQL을 이용해 ‘관계’를 맺는 방법
- 원하는 정보를 테이블에서 추출하려면 대부분 한 개 이상의 테이블이나 뷰에서 데이터를 읽어 와야 함
- 이때 테이블 간의 연결고리로 관계를 맺고 데이터를 추출
➡ 바로 ‘조인’을 통해 이를 구현할 수 있다.
< 조인의 종류 >
• 조인 연산자에 따른 구분 (2개) : 동등 조인, 안티 조인
• 조인 대상에 따른 구분 (1개) : 셀프 조인
• 조인 조건에 따른 구분 (4개) : 내부 조인, 외부 조인, 세미 조인, 카타시안 조인
• 기타 (1개) : ANSI 조인
일반적으로 내부 조인과 외부 조인만 구분할 수 있으면 충분하다.
< ANSI 내부 조인 > - 최근 구축되는 시스템 / 과거는 오라클 조인 사용
- 기존 문법과 ANSI 조인의 차이점
: 조인 조건이 WHERE절이 아닌 FROM 절에 들어 간다는 점 - 이 절에서는 몇 가지 조인 방법에 대해 기존 문법과 ANSI 문법을 비교해 보자.
(1) 기존 문법
SELECT A.컬럼1, A.컬럼2, B.컬럼1, B.컬럼2 ...
FROM 테이블 A, 테이블 B
WHERE A.컬럼1 = B.컬럼1 → 조인 조건
...;
(2) ANSI 문법
SELECT A.컬럼1, A.컬럼2, B.컬럼1, B.컬럼2 ...
FROM 테이블 A
INNER JOIN 테이블 B
ON ( A.컬럼1 = B.컬럼1) → 조인 조건
WHERE ...;
- 외부조인 : 내부조인, 일치되지 않는 데이타를 포함.
- INEER JOIN : 일치되는 데이터를 수평적 결합
- 일반적으로 조인이라하면, 내부조인 or 동등조인
< ANSI 외부 조인 >
(1) 기존 문법
SELECT A.컬럼1, A.컬럼2, B.컬럼1, B.컬럼2 ...
FROM 테이블 A, 테이블 B
WHERE A.컬럼1 = B.컬럼1(+)
...;
- 기준 테이블과 대상 테이블(데이터가 없는 테이블)에서 대상 테이블쪽 조인 조건에 (+)를 붙인다.
(2) ANSI 문법
SELECT A.컬럼1, A.컬럼2, B.컬럼1, B.컬럼2 ...
FROM 테이블 A
LEFT(RIGHT) [OUTER] JOIN 테이블 B
ON ( A.컬럼1 = B.컬럼1)
WHERE ...;
- FROM 절에 명시된 테이블 순서에 입각해 먼저 명시된 테이블 기준으로 LEFT 혹은 RIGHT를 붙이는 점
- 즉 LEFT JOIN 혹은 RIGHT JOIN이라고 명시해도 이는 외부 조인을 의미한다.
✨ ANSI 외부조인 특징
(1) 조인 대상 테이블 중 데이터가 없는 테이블 조인 조건에 (+)를 붙인다
(2) 외부 조인의 조인 조건이 여러 개일 때 모든 조건에 (+)를 붙인다
(3) 한 번에 한 테이블에만 외부 조인을 할 수 있다.
예를 들어, 조인 대상 테이블이 A, B, C 3개이고, A를 기준으로 B 테이블을 외부 조인으로 연결했다면,
동시에 C를 기준으로 B 테이블에 외부 조인을 걸 수는 없다
(4) (+)연산자가 붙은 조건과 OR를 같이 사용할 수 없다
(5) (+)연산자가 붙은 조건에는 IN 연산자를 같이 사용할 수 없다.
(단 IN절에 포함되는 값이 1개인 때는 사용 가능)
728x90
'🏫 Open API_JAVA' 카테고리의 다른 글
[63일차] 계층형 쿼리 / 계층형 쿼리 응용 / WITH 절 / 분석함수 와 window 함수 (0) | 2022.10.25 |
---|---|
[62일차] 서브 쿼리 (0) | 2022.10.24 |
[60일차] 변환 함수 / NULL 관련 함수 / 기타 함수 / GROUP BY 절과 HAVING 절 / ROLLUP 절과 CUBE 절 / 집합 연산자 (0) | 2022.10.21 |
[59일차] SQL 문장 살펴보기 (UPDATE / MERGE / DELETE / COMMIT과 ROLLBACK, TRUNCATE / ROWNUM / 함수) (0) | 2022.10.21 |
[58일차] 테이블 변경 / 테이블 복사 / 뷰 / 인덱스 / 시노님 / 시퀀스 / 파티션 테이블 / SELECT문 (0) | 2022.10.17 |