1. JOIN 개요


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

PK, FK 연관되어 있거나 혹은 없어도 논리적 연결로도 가능

여러 테이블과 나열이 되어도 처리할 때는 두개의 집합 간에만 조인이 일어남

원하는 조인 테이블 - 1 이후 집합간의 조인 갯수

 

2. EQUI JOIN


등가조인, 서로 정확하게 일치하는 값을 가진 경우, 관계형 데이터베이스의 장점

대부분 PK, FK 관계로 이루어짐 (모든것은 아님)

 

SELECT 테이블1.칼럼명, 테이블2.칼럼명, ...

FROM 테이블1, 테이블2

WHERE 테이블1.칼럼명1 = 테이블2.칼럼명2; → WHERE 절에 JOIN 조건을 넣는다

 

SELECT 테이블1.칼럼명, 테이블2.칼럼명, ...

FROM 테이블1 INNER JOIN 테이블2

ON 테이블1.칼럼명1 = 테이블2.칼럼명2; → ON 절에 JOIN 조건을 넣는다.

 

SELECT 구문에서 유일한 이름을 가진 컬럼이라면 테이블명을 붙이지않아도 되지만 테이블에 동일한 칼럼명이 있다면 지정해주어야

또한 개발자나 사용자의 가독성이나 유지보수성을 효과, 오류를 방지하고 일관성을 위해 테이블명을 지정해주는 습관 필요

N개의 테이블로부터 필요한 데이터를 조회하기 위한 JOIN조건은 N-1 필요함

테이블 명이 길어 SELECT 구문이 길어짐으로 FROM절의 테이블에도 별명을 사용할 있음

별명 사용시에는 SELECT, WHERE절에서는 별명을 사용해야

 

3. NON EQUI JOIN


비등가조인, 서로 값이 일치하지 않는 경우 >, < , >=, <= , BETWEEN 연산자 사용(모델에 따라 불가능할 있음)

SELECT 테이블1.칼럼명, 테이블2.칼럼명, ...

FROM 테이블1, 테이블2

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

 

4. 3 이상 TABEL 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_ID

ORDER BY 선수명;

 

또는 INNER JOIN을 명시하여 사용할 수도 있다.

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 선수명;


'자격증 공방 > SQLD' 카테고리의 다른 글

제 4-2절 집합 연산자 (SET OPERATOR)  (0) 2018.07.11
제 4-1절 표준 조인  (0) 2018.07.11
제 3-8절 ORDER BY절  (0) 2018.07.07
제 3-7절 GROUP BY, HAVING 절  (0) 2018.07.07
제 3-6절 함수  (0) 2018.07.07

+ Recent posts