조인(JOIN)

개요

관계형 데이터베이스의 핵심!!

-> 하나이상의 테이블에서 데이터를 추출할 때 사용되는 기능으로 앞서 나온 PK/FK를 이용하여 여러 테이블간의 데이터를 조회 할 수 있도록 함

EQUI JOIN

-> 두 테이블간의 컬럼 값이 정확히 일치하는 경우에 사용
PK < -> PK or PK < -> FK 관계를 이용하여 기술되며 '=' 기호를 사용한다.

  • 조인의 예
{code}SELECT A.PLAYER_NAME, B.TEAM_NAME
FROM PLAYER A, TEAM B
WHERE A.TEAM_ID = B.TEAM_ID
or
SELECT A.PLAYER_NAME, B.TEAM NAME
FROM PLAYER A INNER JOIN TEAM B
ON A.TEAM_ID = B.TEAM_ID
{code}


  • 조인 검색의 예
{code} SELECT P.PLAYER_NAME 선수명, P.BACK_NO 백넘버, T.REGION_NAME 연고지,T.TEAMßAME 팀명
FROM PLAYER P, TEAM T
WHERE P.TEAM_ID = T.TEAM_ID
AND P.POSITION = 'GK'
ORDER BY P.BACK NO
or
SELECT P.PLAYER_NAME 선수명, P.BACK_NO 백넘버, T.REGION_NAME 연고지, T.TEAM_NAME 팀 명
FROM PLAYER P INNER JOIN TEAM T
ON P.TEAM_ID = T.TEAM_ID
WHERE PPOSITION = 'GK'
ORDER BY P.BACK NO
{code}
{tip}조인 조건 기술시 테이블에 대한 ALIAS를 적용해서 SQL 문장을 작성한 경우, WHERE 절과 SELECT 절 에는 테이블명이 아닌 테이블에 대한 ALIAS를 사용해야 한다는 점이다.
And 권장 사항은 아니지만 하나의 SQL 문장 내에서 유일하게 사용하는 칼럼명이라면 칼럼명 앞에 ALIAS를 붙이지 않아도 된다. {tip}

Non EQUI JOIN

-> 두 테이블간의 컬럼 값이 정확히 일치하는 않는 경우에 사용
BETWEEN a AND b or > , < 연산자 사용

{code} SELECT E.ENAME, E.JOB, E.SAL, S.GRADE
FROM EMP E, SALGRADE S
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL;
{code}


3개 이상 TABLE JOIN

{code} 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 선수명
or
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
AND T.STADIUM_ID = S.STADIUM_ID
ORDER BY 선수명
{code}

{info}JOIN 이 필요한 기본적인 이유는 앞서 배운 정규화에서 부터 출발한다
정규화란 불필요한 데이터의 정합성을 확보하고 이상현상(Anomaly) 발생을피하기 위해,테이블을 분할하여 생성하는 것{info}

문서에 대하여