■ join이 필요한 이유(Join은 SQL의 꽃처럼 정말 많이 쓰인다.)

- 필요한 정보(상품명, 유저정보, 카테고리 정보 등)가 각기 다른 테이블에 분산 저장되어 있을 때, 이를 하나의 테이블로 가져와 보기좋게 데이터를 추출하기 위해 사용한다.

 

ex) 거래액데이터 or 주문데이터에 다음의 테이블을 join

- 유저 정보 테이블
- 상품 정보 테이블 / 카테고리 테이블
- 일자별 상품 관련 정보(일자별 매출원가, 일자별 평균 판매가, 일자별 품절여부 등)
- 날짜 테이블(요일, 공휴일 여부 등)
- 거래업체 정보 테이블

 

 

■ join의 위치 및 문법

select 컬럼명
from 테이블명 (as) a
join 테이블명2 (as) b on a.컬럼명 = b.컬럼명

 

※ 주의사항

- 두개 이상의 테이블에 동일한 컬럼명이 있을 때, select절이나 where절에 그 컬럼명을 사용할 경우 -> "a.컬럼명"과 같이 어떤 테이블로부터 가져올 것인지 구체적으로 적어주어야 한다.

 

 

★ join 테이블의 컬럼값이 null인 경우

1. 해당 행이 삭제된다
2. 해당 행이 그대로 남는다. 단, 아무 정보도 가져오지 못한다.

 

 

■ Join의 유형

1. inner join (수행속도가 빠름)

조인결과 : 두개 테이블에 모두 존재하는 행만 남음
필요상황 : 두개 테이블에 조인 키가 빠짐없이 있을 때
ex) 주문 테이블에 상품 테이블을 조인하는 경우

 

2. left join (엑셀의 VLOOKUP과 비슷)

조인결과 : 왼쪽 테이블을 기준으로 오른쪽 테이블을 붙힘
따라서, 만약 오른쪽 테이블에 조인되는 값이 없는 경우 null로 표기됨
필요상황 : 한개 이상의 테이블에 조인키에 null값이 있거나, 테이블 1에 있는 값이 테이블 2에는 없을 때

 

3. right join

조인결과 : left join과 반대
필요상황 : 없음

 

4. full join

조인결과 : 모든 값이 합쳐짐
필요상황 : 초보자 수준에서는 없음

 

 

■ Join 사용시 가장 많이하는 실수

● 행 중복 (비일비재)

→ 조인 키에 특정 테이블에 의도치 않게 중복값이 있으면, 조인 결과 중복이 발생 (이를 알려주지 않음!!)

 

 

● where절 실수

→ 'and'를 사용하는 것이 아닌, where문구 사용하였는지 확인! (데이터 추출 결과가 다를 수 있다)

 

 

● on절 실수

→ on절에 =, >=, <, ,=, between 연산자가 있는지 반드시 확인!!

 


■ 참고 (join key가 한개 이상인 경우)

→ 테이블과 테이블을 조인해주어야할 경우가 꽤 있기 때문에, join문을 제대로 알고 사용하는 것이 중요하다.

'SQL' 카테고리의 다른 글

SQL 응용 문법  (0) 2023.03.07
SQL 실습 ③ 데이터 가공하기  (0) 2023.03.07
SQL 실습 ② 주문 데이터 분석 (join 이용)  (0) 2023.03.02
SQL 주의사항  (0) 2023.02.28
SQL 기본 문법  (0) 2023.02.28

+ Recent posts