우당탕탕 개발일지
SQLD 표준 조인 본문
JOIN
- 두 개 이상의 테이블을 연결 또는 결합하여 데이터를 출력하는 것을 의미한다.
- 일반적으로 PK나 FK 값의 연관에 의해 성립되지만, 논리적인 값들의 연관만으로도 JOIN이 성립 가능하다.
SELECT 테이블.컬럼, 테이블.컬럼
FROM 테이블1, 테이블2
WHERE 조건
EQUI JOIN (등가 조인)
두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하는 경우에 사용되는 방법
Non EQUI JOIN (비등가 조인)
두 개의 테이블 간에 칼럼 값들이 서로 정확하게 일치하지 않는 경우에 사용된다.
Join 종류
1) INNER JOIN
- JOIN 조건에서 동일한 값이 있는 행만 반환한다.
- INNER JOIN 표시는 JOIN 조건을 FROM 절에서 정의하겠다는 표시이므로 USING 조건절이나 ON 조건절을 필수적으로 사용해야 한다.
2) NATURAL JOIN
- 두 테이블 간 동일한 이름을 갖는 모든 칼럼들에 대해 EQUI JOIN 수행
- 반드시 두 테이블 간의 동일한 이름, 타입을 가진 컬럼이 필요
- USING 조건절, ON 조건절, WHERE 절에서 JOIN 조건 정의 X
- JOIN에 사용된 칼럼들은 같은 데이터 유형이어야 하며, Alias와 같은 접두사 X
올바른 사용 예시
FROM TEAM INNER JOIN STADIUM
ON (TEAM.STADIUM_ID = STADIUM.STADIUM_ID)
잘못된 사용 예시
FROM TEAM T INNER JOIN STATIUM S
USING (T.STADIUM_ID = S.STADIUM_ID)
3) OUTER JOIN (=FULL OUTER JOIN)
- JOIN 조건에서 동일한 값이 없는 행도 반환할 때 사용
4) LEFT OUTER JOIN (= LEFT JOIN)
- 먼저 표기된 좌측 테이블에 해당하는 데이터를 먼저 읽은 후, 나중 표기된 우측 테이블에서 JOIN 대상 데이터를 읽어온다.
- 왼쪽 테이블을 기준으로 일치하는 행만 결합되고, 일치하지 않는 부분은 null 값으로 채워진다.
SELECT *
FROM instructor
LEFT OUTER JOIN teaches
ON instructor.id = teaches.id
5) RIGHT OUTER JOIN (= RIGHT JOIN)
- 먼저 표기된 우측 테이블에 해당하는 데이터를 먼저 읽은 후, 나중 표기된 좌측 테이블에서 JOIN 대상 데이터를 읽어온다.
- 오른쪽 테이블을 기준으로 일치하는 행만 결합되고, 일치하지 않는 부분은 null 값으로 채워진다.
SELECT *
FROM instructor
RIGHT OUTER JOIN teaches
ON instructor.id = teaches.id
6) CROSS JOIN (= PRODUCT)
- 두 테이블 데이터의 모든 조합
OUTER JOIN 문제 풀이
SELECT A.고객번호, A.고객명, B.단말기ID, B.단말기명, C.OSID, C.OS명
FROM 고객 A LEFT OUTER JOIN 단말기 B
ON (A.고객번호 IN (11000, 12000) AND A.단말기ID = B.단말기ID) LEFT OUTER JOIN OS C
ON (B.OSID = C.OSID)
ORDER BY A.고객번호
- LEFT OUTER JOIN이 사용되었으므로 고객 테이블은 모두 출력
- 단말기 테이블(Outer 대상이 되는 테이블)의 경우 ON 절에 매핑되는 정보만 출력 -> 고객번호(11000, 12000)
- 단말기 테이블에 해당 정보가 없는 경우 NULL로 출력
고객번호 | 고객명 | 단말기ID | 단말기명 | OSID | OS 명 |
11000 | 홍길동 | 1000 | A1000 | 100 | Android |
12000 | 강감찬 | NULL | NULL | NULL | NULL |
13000 | 이순신 | NULL | NULL | NULL | NULL |
14000 | 안중근 | NULL | NULL | NULL | NULL |
15000 | 고길동 | NULL | NULL | NULL | NULL |
16000 | 이대로 | NULL | NULL | NULL | NULL |
728x90
'기타 > 자격증' 카테고리의 다른 글
SAA - 03 키워드 정리 (1) | 2024.02.06 |
---|---|
리눅스 마스터 2급 - 2과목 (0) | 2023.12.11 |
리눅스 마스터 2급 - 1과목 (1) | 2023.12.10 |
SQLD 계층형 질의와 셀프 조인 (1) | 2023.11.13 |