29일차 - SQL(5)

HA_·2025년 2월 13일
0

29일차 - SQL(5)

5장. 다중 테이블 쿼리

5.1 JOIN

다중 테이블 쿼리

  • 대부분의 쿼리는 여러 테이블을 필요로 함
  • 외래 키(foreign key): 여러 테이블을 연결할 연결 수단
  • 조인(JOIN)
    • 두 개 이상의 테이블을 서로 묶어서(연결) 하나의 결과 집합으로 만들어 내는 것

5.1 JOIN: JOIN의 종류별 그림

JOIN의 종류

5.1 JOIN: 교차 조인

데카르트 곱 (Cartesian Product): 교차 조인

  • 두 개의 테이블에서 한 테이블의 모든 행들과 다른 테이블의 모든 행을 결합
  • 교차 조인(CROSS JOIN): JOIN의 조건이 없이 모든 행을 결합

교차 조인

  • customer 및 address 테이블을 교차 조인
    • 결합(JOIN)의 조건 없이 모든 행을 결합
    - 조인의 조건(ON)이 없음

내부 조인 (INNER JOIN): 가장 일반적인 JOIN 유형

  • 두 개 이상의 테이블을 묶어서 하나의 결과 집합을 만들어 내는 것
    •일반적으로 JOIN은 INNER JOIN을 지칭
    •두 테이블에서 공통으로 존재하지 않는 데이터는 연결(JOIN)하지 않음

5.1 JOIN: 외부 조인

외부 조인(Outer JOIN)

  • 외부 조인
    •한쪽 테이블에만 존재하는 데이터들을 다른 테이블에 결합하는 방식

5.1.3 ANSI JOIN 문법

교재의 테이블 조인 표기법

  • ANSI SQL 표준의 SQL92 버전 사용

이전 문법 표기

  • 조인 조건 및 필터 조건: WHERE절에 표기

  • 조인 조건과 필터 조건을 구분하기 어려움

  • SQL92 문법 표기
    • JOIN 조건: ON 절
    • 필터 조건(검색 조건): WHERE 절-


5.2 세 개 이상 테이블 조인

세 개 이상 테이블 조인

• Key 컬럼의 MUL: 다른 테이블의 기본 키를 참조하는 외래 키인 경우
• MUL(Multiple Occurrences Column): 여러 행이 동일한 값을 가질 수 있음을 의미


  • JOIN 과정에서 FROM절의 테이블 순서는 중요하지 없음: 데이터베이스 내부에서 결정

서브 쿼리 사용

• 서브 쿼리(addr) 결과를 customer 테이블과 INNER JOIN
• 쿼리 결과

  • California에 거주하는 모든 고객들의 이름, 성, 주소, 도시, 지역을 검색

테이블 재사용

  • 여러 테이블을 JOIN할 경우, 같은 테이블을 두 번 이상 JOIN 할 수 있음
  • 두 명의 특정 배우가 출연한 영화 제목 검색
    • 조인 테이블: film, filmactor, actor 테이블
    ![](https://velog.velcdn.com/images/ha
    /post/9abdcdcf-2400-4490-8971-e1cad970b984/image.png)



5.3 셀프 조인

셀프 조인(self-JOIN)

  • 자기 자신에게 JOIN

    • customerid 1(John)과 2(Mary)는 서로 배우자
    • customer_id 3(Lisa)과 5(Tim)는 서로 배우자
    • 고객의 이름과 배우자의 ID는 알 수 있지만, 배우자의 성과 이름은 바로 알 수 없음
    • self-join을 이용하여 customer 테이블에 배우자의 성과 이름을 붙여줄 수 있음.
    ![](https://velog.velcdn.com/images/ha
    /post/a7bdd782-496c-410e-bd0e-d91abc6861e0/image.png)

0개의 댓글