※ 내부 조인 과 외부조인
1. 셀프 조인
셀프란 말에서 알 수 있듯이, 셀프 조인(SELF-JOIN)은 서로 다른 두 테이블이 아닌 동일한 한 테이블을 사용해 조인하는 방법을 말한다.
◈ 예제


사원 테이블을 A, B로 나누어 조인을 하는데, 같은 부서번호를 가진 사원 중 A 사원번호가 B 사원번호보다 작은 건을 조회하는 쿼리다. 사원 테이블에서 부서번호가 20인 건은 단 2건 뿐인데(201과 202) 조건에 의해 결과는 1건만 추출된다.
2. 외부 조인
① 일반 조인
◈ 예제


쿼리는 부서와 job_history 테이블을 부서번호 값을 조건으로 조인한 결과다. 따라서 job_hisotry에 없는 부서는 조회되지 않았다. 그런데 job_hisotry 테이블에는 없더라도 부서 테이블에 있는 모든 부서를 같이 보고 싶다면 외부 조인을 사용하면된다.
② 외부 조인
◈ 예제


10개가 아닌 31개의 결과가 조회되었고 job_history에 없는 부서(10, 30, 40 등)도 모두 조회되었다. 쿼리를 자세히 보면 조인 조건에 (+) 기호가 붙어 있는데 조인 조건에서 데이터가 없는 테이블의 컬럼에 (+) 기호를 붙이는 것이 바로 외부 조인이다. 당연히 10, 30, 40번 부서는 job_history에 데이터가 없으므로 NULL로 출력되었다.
외부 조인 시 알아야 할 내용을 정리해 보자.
❶ 조인 대상 테이블 중 데이터가 없는 테이블 조인 조건에 (+)를 붙인다
❷ 외부 조인의 조인 조건이 여러 개일 때 모든 조건에 (+)를 붙인다
❸ 한 번에 한 테이블에만 외부 조인을 할 수 있다. 예를 들어, 조인 대상 테이블이 A, B, C 3개이고, A를 기준으로 B 테이블을 외부 조인으로 연결했다면, 동시에 C를 기준으로 B 테이블에 외부 조인을 걸 수는 없다
❹ (+)연산자가 붙은 조건과 OR를 같이 사용할 수 없다
❺ (+)연산자가 붙은 조건에는 IN 연산자를 같이 사용할 수 없다(단 IN절에 포함되는 값이 1개인 때는 사용 가능)
3. 카타시안 조인
카타시안 조인(CATASIAN PRODUCT)은 WHERE 절에 조인 조건이 없는 조인을 말한다. FROM 절에 테이블을 명시했으나 두 테이블 간 조인 조건이 없는 조인이다. 조인 조건이 없으므로 조인이라 말할 수 없을 수도 있지만 FROM 절에 2개 이상 테이블을 명시했으므로 일종의 조인이다. 조인 조건이 없으므로 그 결과는 두 테이블 건수의 곱이다. A 테이블 건수가 n1, B 테이블 건수가 n2라고 한다면, 결과 건수는 ‘n1 * n2’가 된다.
◈ 예제


사원 테이블의 총 건수는 107건이고 부서 테이블의 총 건수는 27건이므로, 107 * 27 = 2,889건이 조회되었다.
'SQL' 카테고리의 다른 글
| [SQL 20] 서브쿼리 , 인라인뷰 (0) | 2020.06.09 |
|---|---|
| [SQL 19] ANSI 조인 (내부 조인, 외부 조인, CROSS 조인) (0) | 2020.06.09 |
| [SQL 17] 내부 조인 과 외부 조인 (동등조인, 세미조인, 안티조인) (0) | 2020.06.05 |
| [SQL 16] 집합 연산자(UNION, UNION ALL, INTERSECT, MINUS) (0) | 2020.06.04 |
| [SQL 15] GROUP BY 절, HAVING 절 (0) | 2020.06.03 |