[SQLD] #9. SQL 기본 - 조인

김정인·2021년 1월 28일
0

SQLD

목록 보기
9/16

조인

💡 조인이란

    두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것

  • JOIN은 관계형 데이터베이스의 가장 큰 장점이면서 대표적인 핵심 기능
  • 정규화된 테이블에서 특정 요구조건을 만족하는 데이터들을 조회 하기 위해서는 테이블 간에 논리적인 연관관계가 필요. 이런 논리적인 관계를 구체적으로 표현하는 것이 바로 JOIN 조건
  • 하나의 SQL 문장에서 여러 테이블을 조인 가능
    => 단, 두 개의 테이블간 조인이 먼저 일어나고, 그 조인된 새로운 결과 집합과 다른 테이블이 차례로 조인
  • N가지 테이블을 JOIN 하기 위해서는 최소 (N-1)번의 JOIN 과정이 필요하다.

💡 EQUI JOIN

    테이블 간에 칼럼 값들이 서로 정확히 일치하는 경우에 사용

  • 대부분 PK-FK 관계를 기반으로 함(예외도 존재)
  • JOIN의 조건은 “=” 연산자를 사용해서 WHERE 절에 기술
  • 조건절에 ALIAS명 사용이 가능
  • 만약 테이블에 대한 ALIAS명을 적용하여 SQL 문장을 작성했을 경우, WHERE 절과 SELECT 절에는 테이블명이 아닌 ALIAS를 사용해야 함

    SELECT 테이블1.칼럼명, 테이블2.칼럼명,
    FROM 테이블1, 테이블2
    WHERE 테이블1.칼럼명1 = 테이블2.칼럼명2;
    또는
    SELECT 테이블1.칼럼명, 테이블2.칼럼명,
    FROM 테이블1, 테이블2
    WHERE 테이블1.칼럼명1 = 테이블2.칼럼명2;

SELECT PLAYER.PLAYER_NAME 선수명, TEAM.TEAM_NAME 소속팀명 FROM PLAYER, TEAM
WHERE PLAYER.TEAM_ID = TEAM.TEAM_ID;
SELECT PLAYER.PLAYER_NAME 선수명, TEAM.TEAM_NAME 소속팀명 FROM PLAYER
INNER JOIN TEAM ON PLAYER.TEAM_ID = TEAM.TEAM_ID;

=> 선수 테이블과 팀 테이블에서 선수 이름과 소속된 팀의 이름을 출력

💡 Non EQUI JOIN

    두 개의 테이블 간 칼럼 값들이 서로 정확하게 일치하지 않는 경우 사용

  • 두 개의 테이블이 PK-FK로 연관관계를 가지거나 논리적으로 같은 값이 존재하는 경우에는 “=” 연산자를 이용하여 EQUI JOIN을 사용. 그러나 컬럼 값들이 서로 정확히 일치하지 않는 경우에는 EQUI JOIN을 사용할 수 없음.
  • “=” 연산자가 아닌 다른(Between, 부등호 등) 연산자를 사용하여 JOIN을 수행

    SELECT 테이블1.칼럼명, 테이블2.칼럼명,
    FROM 테이블1, 테이블2
    WHERE 테이블1.칼럼명1 BETWEEN 테이블2.칼럼명1 AND 테이블2.칼럼명2;

SELECT P.PLAYER_NAME 선수명, P.POSITION 포지션, T.REGION_NAME 연고지, T.TEAM_NAME 팀명,
S.STADIUM_NAME 구장명 FROM PLAYER P, TEAM T, STADIUM S
WHERE P.TEAM_ID = T.TEAM_ID AND T.STADIUM_ID = S.STADIUM_ID
ORDER BY 선수명;
SELECT PLAYER.PLAYER_
SELECT P.PLAYER_NAME 선수명, P.POSITION 포지션, T.REGION_NAME 연고지, T.TEAM_NAME 팀명,
S.STADIUM_NAME 구장명 FROM PLAYER P INNER JOIN TEAM T ON P.TEAM_ID = T.TEAM_ID
INNER JOIN STADIUM S ON T.STADIUM_ID = S.STADIUM_ID ORDER BY 선수명;

=> 선수들 별로 홈그라운드 경기장이 어디인지를 출력하고 싶다고 했을 때, 선수 테이블과 운동장 테이블이 서로 관계가 없으므로 중간에 팀 테이블이라는 서로 연관관계가 있는 테이블을 추가해서 세 개의 테이블을 JOIN

0개의 댓글

Powered by GraphCDN, the GraphQL CDN