Oracle DB_JOIN

JW__1.7·2022년 8월 30일
0

DB 공부일지

목록 보기
20/27

JOIN

  • 2개 이상의 테이블을 조회하는 방법
  • 조회할 테이블들은 관계를 줄 수 있어야 한다.
  • JOIN 문법
SELECT 칼럼
FROM 테이블1 JOIN 테이블2
ON 조인조건
  • 콤마(,) 문법
SELECT 칼럼
  FROM 테이블1, 테이블2
 WHERE 조인조건

JOIN 종류

CROSS JOIN

  • 카테젼 곱, 각 테이블의 모든 행을 조인
  • 행 : A와 B의 행 / 열 : A와 B의 행
  • 많은 행을 순식간에 만들 수 있다. (기초데이터 작성용)
  • 조인 조건을 잘못 지정한 경우

부서와 사원 테이블의 크로스 조인 확인

SELECT E.EMP_NO, E.NAME, E.SALARY, D.DEPT_NO, D.DEPT_NAME
  FROM DEPARTMENT D CROSS JOIN EMPLOYEE E;

내부 조인 (INNER JOIN)

  • 각 테이블에서 일치하는 모든 행을 조인

사원번호, 사원명, 부서명을 조회하기

SELECT E.EMP_NO, E.NAME, D.DEPT_NAME
  FROM DEPARTMENT D INNER JOIN EMPLOYEE E
    ON D.DEPT_NO = E.DEPART;

외부 조인 (OUTER JOIN)

  • 한 테이블은 일치하는 행을 조인, 한 테이블은 일치하지 않아도 조인
  • 왼쪽 외부 조인 LEFT OUTER JOIN , 오른쪽 외부 조인 RIGHT OUTER JOIN

사원번호, 사원명, 부서명을 조회하기

  • 모든 사원을 반드시 조회하기
  • 사원(모두포함)
  • 부서(일치하는 부서만 포함)

모두 포함시킬 사원테이블을 OUTER JOIN의 왼쪽/오른쪽에 두느냐에 따라 왼쪽 외부 조인 / 오른쪽 외부 조인으로 구분한다.

셀프 조인 (SELF JOIN)

  • 한 테이블에 참조 관계가 있는 경우
  • 한 테이블의 특정 칼럼과 다른 특정 칼럼을 조인

드라이브(DRIVE) 테이블과 드리븐(DRIVEN) 테이블

  • 드라이브 테이블
    • 조인에서 검색할 때 사용하는 테이블
    • 관계에서 PK를 가진 테이블
    • 대부분 행(Row) 개수가 적은 테이블

  • 드리븐 테이블
    • 관계에서 FK를 가진 테이블
    • 대부분 행(Row) 개수가 많은 테이블

  • 조인할 때 드라이브 테이블을 드리븐 테이블보다 먼저 작성해야 한다.

DRIVE/DRIVEN 테이블이 잘못 지정된 조인

SELECT E.EMP_NO, E.NAME, D.DEPT_NAME
  FROM EMPLOYEE E LEFT OUTER JOIN DEPARTMENT D
    ON E.DEPART = D.DEPT_NO;

왼쪽의 EMPLOYEE 테이블은 모두 조회된다.

DRIVE/DRIVEN 테이블이 잘 지정된 조인

SELECT E.EMP_NO, E.NAME, D.DEPT_NAME
  FROM DEPARTMENT D RIGHT OUTER JOIN EMPLOYEE E
    ON D.DEPT_NO = E.DEPART;

오른쪽의 EMPLOYEE 테이블은 모두 조회된다.

0개의 댓글