2.1.9 조인(Join)

YJ·2022년 8월 29일
0

2.1.9 조인(Join)

개요

  • 두 개 이상의 테이블들을 연결 또는 결합하여 데이터를 출력하는 것
  • PK나 FK의 연관에 의해 성립됨

EQUI JOIN

  • 동등 조인은 두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용되는 방법
  • WHERE 절에 기술된 '=' 연산자를 사용하여 표현
SELECT 테이블1.칼럼명, 테이블2.칼럼명, ...
FROM 테이블1, 테이블2
WHERE 테이블1.칼럼명1 = 테이블2.칼럼명2;

SELECT 테이블1.칼럼명, 테이블2.칼럼명, ...
FROM 테이블1 INNER JOIN 테이블2
WHERE 테이블1.칼럼명1 = 테이블2.칼럼명2;
  • N개의 테이블로부터 필요한 데이터를 조회하기 위해 필요한 JOIN 조건은 대상 테이블의 개수(1개)이다.
  • SELECT 절에서 칼럼에 대한 ALIAS를 사용하는 것처럼 FROM 절의 테이블에 대해서도 ALIAS를 사용 가능하다.
  • 만약 테이블에 대한 ALIAS를 적용해서 SQL 문장을 작성했을 경우, WHERE 절과 SELECT 절에는 테이블명이 아닌 테이블에 대한 ALIAS를 사용해야 한다.
SELECT P.PLAYER_NAME 선수명, P.BACK_NO 백넘버, P.TEAM_ID 팀코드, 
    T.TEAM_NAME 팀명, T.REGION_NAME 연고지
FROM PLAYER P, TEAM T
WHERE P.TEAM_ID = T.TEAM_ID;
  • 에러(별명 정의 후에 SELECT/WHERE 절에서 테이블명 사용하는 경우)
SELECT PLAYER.PLAYER_NAME 선수명, P.BACK_NO 백넘버, P.TEAM_ID 팀코드, 
    T.TEAM_NAME 팀명, T.REGION_NAME 연고지
FROM PLAYER P, TEAM T
WHERE P.TEAM_ID = T.TEAM_ID;
SELECT REGION_NAME, TEAM_NAME, T.STADIUM_ID,
    STADIUM_NAME, SEAT_COUNT
FROM    TEAM T, STADIUM S
WHERE    T.STADIUM_ID = S.STADIUM_ID;

NON EQUI JOIN

  • 두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우에 사용
  • pk, fk 관계인 경우 EQUI JOIN, 그렇지 않은 경우 NON EQUI JOIN 사용
  • '=' 연산자가 아닌 다른(BETWEEN, >, >=, <, <=) 연산자들을 사용하여 JOIN을 수행하는 것
SELECT E.ENAME, E.JOB, E.SAL, S.GRADE
FROM EMP E, SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL;

3개 이상 TABLE JOIN

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_DI
ORDER BY 선수명;
profile
💻귀찮으니 필요할 때만 쓰는 Computer Vision 일지 ㅇㅇ💻

0개의 댓글