본문 바로가기
Back-End/🐬MySQL (RDBMS)

[MySQL] 테이블 조인하기 (1) - 결합연산 : join , inner join , left outer join , right outer join

by 코딩하는 동현😎 2022. 5. 17.

실습을 위해 초기화(클릭)

이미 초기화 한 상태에서 추가로 여러 테이블을 추가해 줍시다.

sql 실습(여러 테이블).txt
0.02MB

query 창에 복붙하고 실행시켜줍니다!

새로고침해서 확인할수 있습니다


1. 외래키(foregin key) 란?

item의 기본키 id 속성이랑 stock의 기본키 tiem_id속성은 동일한 제품을 가리킵니다.

두 테이블을 조인하면 15번 제품의 정보와 가격과 수량(stock)를 한번에 조회할수 있습니다.

stock이 item을 참조한다고 하면 item테이블이 부모키가 되고, stock테이블은 자식 테이블이 됩니다.

이때 부모 테이블의 id는 참조당하는 키 , stock테이블의 참조하는 item_id 키는 외래키(foregin key)가 됩니다.


stock이 item을 참조하면 item 부모 테이블 기준으로 조인이 일어납니다.

부모 테이블에 있는 키는 조인되고, 부모 테이블에 없지만 자식에 있는 키는 삭제가 됩니다.


2. 두 테이블 조인하기

조인은 두 테이블을 하나의 기준키로 하나의 테이블로 묶는 것입니다.

가격정보 , 판매 정보등 다른 테이블에 있는 정보들을 하나의 제품에대해 통일된 테이블에 다 조회할수 있는것으로 현업에서 정말 많이 쓰입니다.

조인에는 left outer join , right outer join , inner join 이 있습니다.

문법은 아래와 같고 from에서 테이블 선언할때 조인을 해줍니다.

<~> 부분에는 left outer  , right outer , inner 세 옵션중 하나가 들어갈 수 있습니다.

SELECT 테이블이름.속성 , 테이블이름.속성......
FROM 테이블1 <~> JOIN 테이블2
ON 부모테이블.기본키 = 자식테이블.외래키

LEFT OUTER JOIN

left outer join은 왼쪽에 테이블을 기준(부모)로 조인하는것을 의미합니다.

id , item_id은 조인한 키이기 때문에 같은게 보이시죠?

stock은 오른쪽에 선언된 자식테이블이므로 부모와 겹치는 것은 조인되고, 자식한테 없는건 자식이 null값으로 조인되고, 자식 테이블에만 있는 것은 삭제 됩니다.


RIGHT OUTER JOIN

right outer join은 오른쪽에 테이블을 기준(부모)로 조인하는것을 의미합니다.


INNER JOIN

inner join은 서로가 기준이 되어서 둘다 가지고 있는 객체에 대해서만 조인이 일어납니다.

첫번째 테이블이 키를 가지고 있어도 두번째 테이블이 없으면 삭제되고 두번째 테이블이 키를 가지고 있어도 첫번째 테이블이 없으면 삭제됩니다.


3. alias를 이용해 간단하게 작성하기

from안에 조인할때 as를 이용하면 간단하게 작성할수 있습니다.

어차피 조인한 키는 공통이니까 하나의 테이블의 ID만 출력했습니다.

반응형

댓글