📌 조인이란?
두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것
예시
회원 테이블(이름, 주소, 전화번호… ), 구매 테이블(물건, 가격…) 이 주어졌을 때,
배송을 보내려면 구매 테이블과 회원 테이블의 정보가 둘다 필요
두 테이블을 엮어서 하나의 배송을 위한 정보(이름, 주소, 물건)를 추출
📌 INNER JOIN
SELECT <열 목록>
FROM <첫 번째 테이블>
INNER JOIN <두 번째 테이블> #INNER JOIN은 'INNER' 생략가능
ON <조인될 조건>
[WHERE 검색 조건]
#예시
#블랙핑크(BLK)가 구매한 물건의 목록에 회원정보 합치기
SELECT *
FROM buy
JOIN member
ON buy.mem_id = member.mem_id
WHERE buy.mem_id = 'BLK';
📌 INNER JOIN 간결한 표현
SELECT buy.mem_id, member.mem_name, buy.prod_name, member.addr
FROM buy
JOIN member
ON buy.mem_id = member.mem_id;
#테이블 이름에 별칭을 붙이기
SELECT B.mem_id, M.mem_name, B.prod_name, M.addr
FROM buy B
JOIN member M
ON B.mem_id = M.mem_id;
📌 OUTER JOIN
두 테이블을 조인할 때 필요한 내용이 한 쪽 테이블에만 있어도 결과를 추출할 수 있음
JOIN 조건에 적합한 값이 없는 행도 반환할 때 사용
A, B 테이블을 JOIN할 경우, 조건에 맞지 않는 데이터도 표시하고 싶을 때 OUTER JOIN 사용
SELECT <열 목록>
FROM <첫 번째 테이블(LEFT 테이블)>
<LEFT | RIGHT | FULL> OUTER JOIN <두 번째 테이블(RIGHT 테이블)>
ON <조일될 조건>
[WHERE 검색 조건];
#예시
SELECT M.mem_id, M.mem_name, B.prod_name, M.addr
FROM member M
LEFT OUTER JOIN buy B
ON M.mem_id = B.mem_id
ORDER BY M.mem_id;
📌 LEFT OUTER JOIN
왼쪽 테이블의 내용은 모두 출력되어야 함
OUTER 생략 가능
A LEFT OUTER JOIN B
=> A,B 테이블 간 조인 조건이 맞지 않는 A, B의 테이블의 데이터 중 A 테이블의 데이터는 무조건 결과값에 포함되어 나옴
=> A를 다 가져왔을 때, B 테이블에서 가져온 컬럼에 해당하는 값이 없으면 NULL 값으로 채움
📌 RIGHT OUTER JOIN
오른쪽 테이블의 내용은 모두 출력되어야 함
OUTER 생략 가능
A RIGHT OUTER JOIN B
=> A,B 테이블 간 조인 조건이 맞지 않는 A, B의 테이블의 데이터 중 B 테이블의 데이터는 무조건 결과값에 포함되어 나옴
=> B를 다 가져왔을 때, A 테이블에서 가져온 컬럼에 해당하는 값이 없으면 NULL 값으로 채움
📌 OUTER JOIN 활용
prod_name이 NULL인 회원은 아직 구매한 이력이 한 번도 없는 회원
이런 회원을 추출해 구매 촉진 이메일 등을 보낼 수 있음
#회원가입만 하고 한 번도 구매한 적이 없는 회원의 목록 추출
SELECT M.mem_id, M.mem_name, B.prod_name, M.addr
FROM member M
LEFT OUTER JOIN buy B
ON M.mem_id = B.mem_id
WHERE B.prod_name IS NULL
ORDER BY M.mem_id
SQL마스터 룹신님 1따봉 드리겠읍니다,,