Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

우당탕탕 개발일지

SQLD 표준 조인 본문

기타/자격증

SQLD 표준 조인

YUDENG 2023. 11. 13. 00:23

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