강의
JOIN
"JOIN"은 다수의 테이블을 공통 필드를 통해 merge하는 함수 입니다.
주로 스타 스키마로 분산되어 있는 테이블을 통합하는데 사용합니다.
JOIN의 종류를 정해주지 않은 경우 INNER JOIN이 기본으로 적용됩니다.
SELECT A.*, B.*
FROM tableA
___ JOIN tableB
ON A.key1 = B.key1 and A.key2 = B.key2 ...
종류
- INNER JOIN : 교집합
- 양쪽 테이블에서 매칭되는 레코드만 리턴
- 양쪽 테이블의 필드가 모두 채워진 상태로 리턴
- FULL JOIN : 합집합
- 양쪽 테이블의 모든 레코드 리턴
- 매칭되는 경우에만 양쪽 테이블의 모든 필드들이 채워진 상태로 리턴
- CROSS JOIN : 조합(Combination)
- 양쪽 테이블의 모든 레코드의 조합 리턴
- LEFT JOIN : 왼쪽에 포커싱
- 왼쪽 테이블(Base)의 모든 레코드 리턴
- 왼쪽 테이블과 매칭되는 오른쪽 테이블의 필드만 채워진 상태로 리턴
- 왼쪽 테이블과 매칭되지 않는 오른쪽 테이블의 필드는 NULL 리턴
- RIGHT JOIN : 오른쪽에 포커싱
- 오른쪽 테이블(Base)의 모든 레코드 리턴
- 오른쪽 테이블과 매칭되는 왼쪽 테이블의 필드만 채워진 상태로 리턴
- 오른쪽 테이블과 매칭되지 않는 왼쪽 테이블의 필드는 NULL 리턴
- SELF JOIN
- 동일한 테이블을 alias 변경하여 자기 자신과 조인
고려 사항
- 중복 레코드 존재 여부
- Primary key 유일성 보장 여부
- 테이블간의 관계 정의 명확성
- One to one : 일대일대응 혹은 부분집
- One to Many : 증폭 위험 존재
- Many to One : 증폭 위험 존재
- Many to Many : 일반적으로 One to One 혹은 One to Many로 변환
- 베이스로 지정할 테이블 결정
BOOLEAN 타입 처리
BOOLEAN 타입 처리할 때에 True 혹은 False 혹은 NULL이 존재할 수 있음에 주의해야 합니다.
True 와 False는 = 혹은 != 혹은 <>을 사용하여 비교할 수 있습니다.
NULL은 IS 혹은 IS NOT만을 이용하여 비교할 수 있습니다.
"COALESCE"는 NULL 값을 다른 백업값으로 바꿔주는 함수 입니다.
COALESCE(exp1, exp2, exp3, ...)
공백 혹은 예약키워드는 ""로 둘러싸서 사용할 수 있습니다.
'데브코스 TIL > SQL' 카테고리의 다른 글
View & CTE (1) | 2024.01.05 |
---|---|
SQL을 이용한 데이터 분석 Day 5 트랜잭션과 기타 고급 SQL 문법 (0) | 2023.11.17 |
SQL을 이용한 데이터 분석 DAY 3 GROUP BY와 CTAS (0) | 2023.11.15 |
SQL을 이용한 데이터 분석 Day 2 SELECT 배우기 (1) | 2023.11.14 |
SQL을 이용한 데이터 분석 Day 1 SQL과 데이터베이스 소개 (0) | 2023.11.13 |