JOIN

wstudee·2020년 8월 20일
0

데이터베이스

목록 보기
3/4

JOIN

  • RDB의 핵심 기능
  • 조회할 컬럼이 여러 개의 테이블에 분산되어 저장된 경우
    테이블 사이의 관계(Relationship)를 이용하여 검색할 때 사용
  • 일반 JOINANSI JOIN 으로 구분
  • JOIN이 필요한 이유
    : 정규화 과정에서 컬럼들이 분산저장
    : 또는 한 테이블에 있을 수 없는 컬럼들이 나눠서 저장되기 때문
  • 관계가 맺어졌다 = 외래키로 맺어졌다.
  • 참조관계 : 다른 테이블의 기본키를 가져오는 테이블을 자식테이블이라고 함
  • 식별자관계(직선) : A테이블의 기본키가 B테이블의 외래키이면서 기본키가 되는 경우

1. Equi-JOIN (= '내부조인')

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


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

(Alias 는 사원번호, 사원명, 부서코드, 부서명)

  • 결과

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

Alias 사원번호, 사원명, 부서코드, 부서명

  • 결과

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

(Alias는 상품코드, 상품명, 판매금액)

  • 결과

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

Alias는 거래처코드, 거래처명, 매입금액합계

  • 결과

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

Alias 는 상품코드, 상품명, 매입수량, 매출수량

  • ANSI OUTER JOIN , 서브쿼리로 해결

  • 매입 / 매출 조회결과

  • 일반조인 결과 : 매입과 매출이 동시에 일어난 항목만 조회됨 (일반 조인의 한계)


2. Cartesian Product

  • 조인조건이 없는 경우, 조인조건이 잘못 기술된 경우
  • 불가피한 경우를 제외하고 활용하지 말 것
  • 모든 행들의 조합을 결과로 반환
  • 예) A 테이블(100행 20열), B 테이블(2000행 10열)
    A,B 테이블의 Cartesian Product 결과
    : 행의 갯수 = A행 x B행 = 200000 행
    : 열의 갯수 = A열 + B열 = 30 열

0개의 댓글