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 |