본문 바로가기
  • Let's study
데이터베이스/Oracle

[Oracle] Join

by 코딩고수이고파 2022. 4. 17.

Join

하나 이상의 테이블을 연결하여 데이터를 검색하는 방법

SELECT table.column1 [, table.column2, ....]
FROM table1, table2
WHERE table1.column1 = table2.column2;

 

Cartesian Product(카티션 곱)

모든 가능한 행들의 조인으로, 조인에 사용된 테이블들의 모든 데이터 반환

Cartesian product가 발생하는 경우

  • 조인 조건을 정의하지 않았을 경우
  • 조인 조건이 잘못된 경우
  • 첫 번째 테이블의 모든 행들이 두 번째 테이블의 모든 행과 조인되는 경우

EX)

아래에 DEPT 테이블과 EMP 테이블이 있다.

사원 번호, 사원 이름, 업무, 소속 부서명을 출력해보자. 

조인 조건을 명시하지 않아 Cartesian Product가 실행된다.

 

Equi Join

조인 조건에서 '='을 사용하여 값들이 정확하게 일치하는 경우에 사용되는 조인

SELECT table.column1 [, table.column2, ....]
FROM table1, table2
WHERE table1.column1 = table2.column2;	//이 부분

EX)

급여가 2000이상인 사원의 번호, 사원 이름, 업무, 부서명을 출력해보자.

테이블 별칭

  • 긴 테이블 이름을 간단하게 사용할 수 있음
  • SELECT SQL문에서만 유용
  • FROM 절에 테이블 별칭이 사용되면 SELECT문 전체에서 사용 가능
SELECT empno, ename, job, dname 
FROM emp e, dept d 
WHERE e.deptno=d.deptno and sal>=2000;

 

Non-Equijoin

테이블의 어떤 컬럼도 조인할 테이블의 컬럼에 일치하지 않을 경우에 사용되는 조인

  • BETWEEN AND
  • IS NULL
  • IS NOT NULL
  • IN
  • NOT IN

EX)

급여가 3000과 4000 사이의 사원 이름과 부서명을 출력하시오.

 

Self Join

자체적으로 테이블을 조인하는 경우

EX)

각 사원의 관리자를 출력하시오.

 

Outer Join(외부 조인)

  • 정상적으로 조인 조건을 만족하지 못하는 행들을 보기 위해 사용
  • 조인시킬 값이 없는 조인측에 (+)
  • (+)는 표현식의 한 편에만 사용 가능
  • IN 연산자 사용 불가, OR 연산자에 의해 다른 하나의 조건에 연결될 수 없음

Left Outer Join

왼쪽에 있는 테이블의 데이터를 모두 가져온 후, 오른쪽 테이블의 데이터를 매칭하고 데이터가 없는 경우 NULL로 표시한다.

SELECT table.column1 [, table.column2, ....]
FROM table1, table2
WHERE table1.column1 = table2.column2(+);

Right Outer Join

오른쪽에 있는 테이블의 데이터를 모두 가져온 후, 왼쪽 테이블의 데이터를 매칭하고 데이터가 없는 경우 NULL로 표시한다.

SELECT table.column1 [, table.column2, ....]
FROM table1, table2
WHERE table1.column1(+) = table2.column2;

이름과 반대되는 쪽에 (+)가 붙는다는 것을 헷갈리지 말자.

EX)

일반적인 조인

Left Outer Join

Right Outer Join

'데이터베이스 > Oracle' 카테고리의 다른 글

[Oracle] 날짜 처리 함수  (0) 2022.04.23
[Oracle] 숫자 처리 함수  (0) 2022.04.22
[Oracle] 문자 처리 함수  (0) 2022.04.21
[Oracle] Integrity Constraints(데이터 무결성 제약조건)  (0) 2022.04.19
[Oracle] Sub Query  (0) 2022.04.18

댓글