[MYSQL] Join

3
post-thumbnail
post-custom-banner

OracleSQL을 하다가 MySQL을 배우다보니까 설렌다 👊

1. Join이란?


두 개 이상의 테이블을 서로 묶어서 하나의 결과 집합으로 만들어 내는 것을 말합니다.

mysql같은 관계형 데이터베이스는 분류 별로 나누어 데이터를 저장하기 때문에 Join은 빈번히 사용됩니다.
가령 쇼핑몰에서 상품을 구매한 회원 목록을 출력하기 위해선 회원 정보 테이블과 구매 테이블을 연결해야 하고 이런 경우 Join을 사용합니다.

2. INNER JOIN


조인 조건에 만족하는 행만 출력합니다.

select < 목록>
from < 번째 테이블>
	inner join < 번째 테이블>
 	on <조인될 조건>
 [where 검색조건]

두 테이블의 행을 합치기 위한 기준을 on에 적습니다.
예를 들어 회원 정보 테이블과 회원 구매 테이블의 데이터들을 합치기 위해서는 user_id 처럼 공통된 열 목록이 필요합니다.

select info.age, info.address, buy.product
from 회원 정보 테이블 info
	join 회원 구매 테이블 buy
    on info.user_id = buy.user_id
    where = info.user_id = '린가드'

조인을 사용할 때 주의할 점은 어떤 테이블의 열인지 잘 구분해야 합니다.테이블이름.열이름으로 구분할 수 있습니다.
그런데 테이블이름을 그대로 쓰면 구문이 복잡해지기 때문에 테이블을 지정할 때 뒤에 별칭을 입력해 사용합니다.
또, where가 없다면 테이블의 모든 행이 출력됩니다. 원하는 데이터만 얻을 수 있게 설정합니다.

3. OUTER JOIN


조인 조건에 만족하는 행과 기준 테이블의 행을 모두 출력합니다.
left join은 왼쪽 테이블을 기준으로 합니다.
right join은 오른쪽 테이블을 기준으로 합니다.
mysql에선 full join을 지원하지 않습니다. 대신 union을 사용해 left join과 right join의 구문을 합칠 수 있습니다.

select <열목록>
from < 번째 테이블(left 테이블)>
<left | right > OUTER JOIN < 두 번째 테이블(RIGHT 테이블)>
	on <조인될 조건>
[WHERE 검색조건]

작성할 때 OUTER는 생략 가능합니다.

4. CROSS JOIN


한 쪽 테이블 각각의 행에 다른 쪽 테이블의 모든 행을 조인시키는 기능입니다.
행 개수가 12개과 10개인 테이블을 CROSS JOIN하면 120개의 행이 됩니다.
보통 많은 양의 데이터가 필요할 때 테스트 용도로 사용합니다.

SELECT *
	FROM 테이블1
    	CROSS JOIN 테이블2

cross join은 on 구문을 사용할 수 없습니다.

참고 : https://velog.io/@ooknimm/mysqlJoin

profile
ᴅᴇ́ᴠᴇʟᴏᴘᴘᴇᴜʀ. ᴘʀᴏɢʀᴀᴍᴍᴀᴛɪᴏɴ 🔥
post-custom-banner

4개의 댓글

comment-user-thumbnail
2021년 4월 13일

이야~~ 짱이야 지훈이

답글 달기
comment-user-thumbnail
2021년 4월 13일

짱이돠

답글 달기
comment-user-thumbnail
2021년 4월 24일

조인 짤방이 너무 웃겨서..

답글 달기
comment-user-thumbnail
2021년 4월 26일

짤방보고 들어왔네요. 정작 내 개발수준은 입문단계인데 조인에... 당했다!

답글 달기