컴퓨터 공부/Advanced Database

[5월 27일 2교시] 조인 1

려리군 2009. 5. 27. 15:06

Cartestion Product(카테이션 프로덕트, 곱)

조인 쿼리의 2테이블이 조인 조건을 가지고 있지 않으면 오라클은 카테이션 프로덕트(곱)을 리턴한다.

오라클은 서로서로 각 열과 다른 테이블의 각 열과 결합한다.

예시)

SELECT * FROM emp, dept;

emp의 열의 수가 14개, dept의 열의 수가 4개이므로 14X4를 수행하여 56개의 열이 리턴된다.


테이블 조인

2개 이상의 테이블을 연관시키는 연산.

주로 WHERE 구문에 조인 조건을 적는다.

조인 조건은 주로 각 테이블의 주키와 외래키로 구성된다.

예시)

SELECT * FROM emp, dept WHERE emp.deptno = dept.deptno;


테이블 조인 형태

오라클 용어 : 카테이션 프로덕트, Equijoin : 같다는 조건 ('='), Non-equijoin : 같지 않은 조건

Outer join : 외부 조인, NULL도 포함, Self join : 같은 테이블 2개를 조인.

ANSI용어 : Cross join, Natural Join, Join Using, Join on, Right(Left, Full) Outer Join


Equijoin

조인 조건에서 같다는 비교 연산자를 사용하여 두개 이상 관련된 테이블로부터 데이터를 얻는 쿼리.

n개의 테이블에 대해 n-1의 조인 조건이 필요하다.


Non-equijoin

조인 조건에서 같다는 조건 이외의 연산자를 사용하여 두개 이상 관련된 테이블로부터 데이터를 얻는 쿼리.


Outer join

WHERE절에 (+)를 사용한다.

(+)가 없는 열에 대한 모든 정보를 보여준다. (+)가 있는 열에 NULL을 포함해서 보여준다.

오라클에서는 (+)가 양쪽 컬럼 모두 있을 수 없다.


<ANSI 문법>

※ WHERE절이 없다. 조인 조건을 분리해서 쓸 수 있다.

사용법 : SELECT 열 FROM 테이블1 (조인조건) 테이블2

OUTER JOIN

 - LEFT OUTER JOIN : 왼쪽 테이블을 기준으로 조인한다. 왼쪽 열에 대한 정보가 모두 나오며 오른쪽 테이블 열에 대한 값이 NULL이 나올 수 있다.

 - RIGHT OUTER JOIN : 오른쪽 테이블을 기준으로 조인한다.

 - FULL OUTER JOIN : 양쪽 테이블 모두 NULL을 포함하여 조인한다.

NATURAL JOIN

같은 이름을 가진 모든 컬럼을 조인조건으로 사용

a JOIN b using(열이름)

같은 이름을 가진 컬럼 중 using에 사용한 컬럼을 조인 조건으로 사용

a JOIN b on (조건식)

조인 조건의 컬럼이름이 각 테이블에 대해서 다를 때 on 사용

예시) 

SELECT ename, dmane, d.deptno from emp e JOIN dept d on(e.deptno = d.???)