참고

2020-08-20-04)JOIN.sql
2020-08-21-01)내부외부조인.sql

  • RDB의 핵심 기능
  • 조회할 컬럼이 여러 개의 테이블에 분산되어 저장된 경우
    테이블 사이의 관계(Relationship)을 이용하여 검색할 때 사용
  • 일반join과 ansi join으로 구분
  • JOIN이 필요한 이유 (사용예시)
    • 테이블을 정제하고 정규화를 시키는 경우 하나의 컬럼에 들어있는 값이 여러 테이블로 나누어져서 저장되게됨
    • ex. 카트테이블 이용해서 금액계산시 단가는 PROD에 들어있음. 내가 원하는 단가를 PROD에서 꺼내와야함.
  • 조인시 중심테이블을 어느 것으로 할지 선정하는 것이 중요

1. Cartesian Product (ANSI: CROSS JOIN)

  • 사용하지 말것
  • 모든 행들의 조합을 결과로 반환
    • ex. A 테이블이 100행 20열, B 테이블이 2000행 10열로 구성되었다면
      -->A,B 테이블의 Cartesin Product 결과는 200000행, 30열로 결과 반환
      =>행=행*행, 열=열+열
  • 조인조건이 없을 경우, 조인조건을 잘 못 기술한 경우

예시

2. Equi-JOIN (≒ 내부조인) (ANSI: INNER JOIN)

  • 조인조건에 '='연산자를 사용하는 조인형식
  • 조인조건: 사용된 테이블의 갯수가 n개일때 적어도 n-1개 이상이어야한다.
  • 일치하지 않는 데이터(행) 무시
  • ANSI 형식에서는 INNER JOIN이라고 함

사용형식 - 일반 JOIN

사용형식 - INNER JOIN (ANSI)

예시

1. 사원테이블에서 사원정보를 조회하시오.

  • Alias: 사원번호, 사원명, 부서코드, 부서명
  • 일반조인
  • ANSI조인
  • 결과 동일

2. 사원테이블에서 100번 부서의 사원정보를 조회하시오

  • Alias: 사원번호, 사원명, 부서코드, 부서명
  • 일반조인
  • ANSI조인 (1)
  • ANSI조인 (2)
    • 조인 테이블이 2개밖에 없기때문에 가능한 것
    • 테이블3개 이상시에는 잘 안쓰임, 보통 두 테이블에만 조건을 부여하기때문
  • 결과 동일

3. 2005년 6월 상품별 매출현황을 조회하시오

  • Alias: 상품코드, 상품명, 금액
  • 일반조인
  • ANSI조인
  • 결과 동일

4. 매입테이블에서 2005년 5월 거래처별 매입현황을 조회하시오

  • Alias는 거래처코드, 거래처명, 매입금액합계
  • 일반조인
  • ANSI조인
  • 결과동일

5. 2005년 5월 상품별 매입/매출 정보를 조회하시오

  • Alias: 상품코드, 상품명, 매입수량, 매출수량
  • 일반조인
  • 일반OUTER조인
  • ANSI조인
  • SUBQUERY + 일반OUTER조인
    • ANSI와 결과값 같음
profile
갈 길이 멀다

0개의 댓글