Programming/기초 지식

SQL 조인 질의문

728x90

목차

     


     

    2021.12.11 - [Programming/기초 지식] - SQL 트랜잭션(Transaction)

     

    SQL 트랜잭션(Transaction)

    목차 2021.12.10 - [Programming/Java 기초] - SQL 데이터 삽입/수정/변경 SQL 데이터 삽입/수정/변경 목차 2021.12.10 - [Programming/기초 지식] - SQL 데이터 검색 SQL 데이터 검색 목차 2021.12.09 - [Program..

    montoo.tistory.com

     

    1. 조인

    1.1. 조인의 개념

    • 하나의 SQL 질의문에 의해서 여러 테이블에 저장된 데이터를 한번에 조회할 수 있는 기능
    • 두 개 이상의 테이블을 '결합'한다는 의미
    • 조인의 필요성
      • 하나의 SQL 질의문이 하나의 테이블만 검색할 수 있다고 하면 너무나 불편하기 때문.

    1.2. 간단한 조인

    • SQL에서 간단한 조인 표기법
      • FROM절 조인에 참여하는 테이블을 기록
      • WHERE절에 조인 조건을 기술
    • 조인문 작성시 유의사항
      1. 컬럼 이름의 모호성
        • 컬럼 이름 앞에 테이블 이름을 접두사로 사용한다.
        • 테이블 이름과 컬럼 이름은 점( . )으로 구분
      2. .테이블의 이름이 긴 경우 테이블 이름 대신 별명을 사용할 수 있다
        • 하나의 SQL에서 테이블 이름과 별명을 혼용해서 쓸 수 없다.

    2. 다양한 조인 구문

    2.1. 다양한 조인들

    • 카티샨 프로덕트 (Cartesian Product)
      • 두 테이블에 속한 튜블들의 모든 가능한 쌍을 생성
      • FROM절에 두 개 이상의 테이블명을 기록
      • WHERE절에는 조인조건을 기술하지 않는다
    • 동등 조인
      • 조인 조건이 "="인 경우
    • 자연 조인
      • 조인 조건을 명시하지 않고 조인한다고 할 때 두 테이블에 공통으로 나타나는 속성의 동등조인으로 생각
      • MS-SQL에서는 자연 조건을 명시적으로 지원하지는 않는다.
    • 쎄타 조인
      • 조인 조건으로 <, >, <=, >=, != 등을 사용할 수 있다.
      • 일반적인 조인 조건에 대하여 쎄타 조인이라고 한다.
    • 셀프 조인
      • 하나의 테이블 내에 있는 컬럼끼리 연관시켜 조인이 필요한 경우
      • 조인 대상 테이블이 두 개 인데 동일한 테이블
      • 물리적으로 1개이나 논리적으로 서로 다른 테이블이라고 생각하면 된다.
    • 다중 조인
      • 조인 질의의 경우 조인에 참여하는 테이블이 2개로 이를 보통 '2중 조인(2-way join)'이라고 한다
      • 경우에 따라 여러 테이블 간의 조인이 필요한 경우도 있다.
    • ANSI 조인
      • SQL을 표준화할 때 만든 ANSI 표준 문법
      • 기존 SQL과 차이점은 조인 조건을 WHERE로 표현하지 않고 FROM절에 표현한다
      • 크로스 조인 : 카티샨 프로덕트의 다른 표현법
        FROM 테이블명 CROSS JOIN 테이블명​
      • 내부 조인 : 일반적으로 조건의 ANSI 조인 표기법
        FROM 테이블명 INNER JOIN 테이블명 ON 조인조건​
        FROM 테이블명 JOIN 테이블명 ON 조인조건​
    • 외부 조인
      • 일반적인 조인은 조인 조건을 만족하는 튜플들만이 조인 결과에 나옴
      • 조인 조건을 만족하지 않는 튜플들도 결과로 보고 싶을 경우
        : 조인에 참여하는 테이블에 속한 모든 튜플 출력
      • ANSI 조인 표기법 : 명시적 표기법
        • LEFT OUTER JOIN : 왼쪽 테이블에 있는 튜플들은 다 나옴
        • RIGHT OUTER JOIN : 오른쪽 테이블에 있는 튜플들은 다 나옴
        • FULL OUTER JOIN : 양쪽 테이블에 있는 튜플들은 다 나옴

     

    300x250