[Oracle DB] JOIN

방용환·2023년 5월 3일
0
post-thumbnail

1. JOIN

  • JOIN : 두 개 이상의 테이블에서 행을 결합하여 원하는 컬럼값을 검색하기 위한 기능
  • 두 개 이상의 테이블에서 컬럼값을 검색하기 위해서는 반드시 검색행을 결합하기 위한 조건을 제공하여 검색
    => 카테시안 곱 (CARTESIAN PRODUCT) : 두 개 이상의 테이블을 결합조건 없이 검색한 경우 발생되는 검색 결과
    => 결합조건 없이 검색한 경우 두 개 이상의 테이블에 저장된 모든 행을 교차 결합하여 검색 결과를 제공

2. 동등결합 (EQUI JOIN)

  • 동등결합 (EQUI JOIN) : 두 개 이상의 테이블에서 결합조건에 '=' 연산자를 사용하여 참인 행만 결합하여 검색
  • 결합 테이블에 같은 이름의 컬럼을 동시에 검색할 경우 컬럼 별칭을 사용하여 검색하는 것을 권장
  • TABLE ALIAS : 테이블에 일시적으로 새로운 이름을 부여하여 용하는 기능
SELECT 검색대상, ... FROM 테이블명 별칭, 테이블명 별칭, ...

3. 비동등결합 (NON-EQUI JOIN)

  • 비동등결합 (NON-EQUI JOIN) : 두 개 이상의 테이블의 결합조건에 '='연산자가 아닌 다른 연산자를 사용하여 참인 행을 결합하여 검색

4. 외부결합 (OUTER JOIN)

  • 외부결합 (OUTER JOIN) : 결합조건이 참인 행만 경합하여 검색하는 것이 아니라 결합조건이 맞지 않는 행도 NULL과 결합하여 검색
  • 결합 조건식의 테이블에 '(+)'를 사용하면 결합조건이 맞지 않는 행을 NULL과 결합하여 검색

5. 자기결합 (SELF JOIN)

  • 자기결합 (SELF JOIN) : 하나의 테이블을 서로 다른 별칭을 부여하여 2개 이상의 테이블로 구분하여 행을 결합하여 검색
  • 검색대상을 사용할 때 테이블을 명확하게 구분하기 위해 테이블 별칭을 사용하여 컬럼값 검색

결합조건과 행조건을 WHERE에서 같이 사용하므로 유지보수의 불편함 존재
=> 1999년 채택된 표준 SQL(SQL3)에서는 테이블의 결합조건과 행의 조건을 구분하여 사용될 수 있도록 다양한 테이블 결합 관련 기능 제공

6. CROSS JOIN

  • CROSS JOIN : 결합 테이블의 모든 행을 교차 결합하여 검색
SELECT 검색대상, 검색대상, ... FROM 테이블명1 CROSS JOIN 테이블명2

7. NATURAL JOIN

  • NATURAL JOIN : 결합 테이블에 같은 이름의 컬럼이 하나만 있는 경우 같은 이름의 컬럼에 저장된 컬럼값이 같은 행을 서로 결합하여 검색
  • 결합 테이블에 같은 이름의 컬럼값을 이용하여 자동으로 행을 결합
SELECT 검색대상, 검색대상, ... FROM 테이블명1 NATURAL JOIN 테이블명2

8. JOIN USING

  • JOIN USING : 결합 테이블에 같은 이름의 컬럼이 여러개 있는 경우 같은 이름의 컬럼에 저장된 컬럼값으로 행을 결합하여 검색
SELECT 검색대상, 검색대상, ... FROM 테이블명1 JOIN 테이블명2 USING(컬럼명)

9. INNER JOIN

  • INNER JOIN : 결합조건이 참인 행을 결합하여 검색
  • 'INNER'는 생략 가능
SELECT 검색대상, 검색대상, ... FROM 테이블명1 INNER JOIN 테이블명2 ON 결합조건

10. OUTER JOIN

  • OUTER JOIN : 결합조건이 참인 행만 결합하여 검색하는 것이 아니라 결합조건이 맞지 않는 행도 NULL과 결합하여 검색
SELECT 검색대상, 검색대상, ... FROM 테이블명1 {LEFT|RIGTH|FULL}
	OUTER JOIN 테이블명2 ON 결합조건
  • LEFT OUTER JOIN : 왼쪽 테이블의 모든 행을 검색하고 결합조건이 맞지 않는 오른쪽 테이블의 행은 NULL과 결합
  • RIGHT OUTER JOIN : 오른쪽 테이블의 모든 행을 검색하고 결합조건이 맞지 않는 왼쪽 테이블의 행은 NULL과 결합
  • FULL OUTER JOIN : 양쪽 테이블의 모든 행을 검색하고 결합조건이 맞지 않는 양쪽 테이블의 행은 NULL과 결합

0개의 댓글