OracleSQL을 하다가 MySQL을 배우다보니까 설렌다 👊
두 개 이상의 테이블을 서로 묶어서 하나의 결과 집합으로 만들어 내는 것을 말합니다.
mysql같은 관계형 데이터베이스는 분류 별로 나누어 데이터를 저장하기 때문에 Join은 빈번히 사용됩니다.
가령 쇼핑몰에서 상품을 구매한 회원 목록을 출력하기 위해선 회원 정보 테이블과 구매 테이블을 연결해야 하고 이런 경우 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가 없다면 테이블의 모든 행이 출력됩니다. 원하는 데이터만 얻을 수 있게 설정합니다.
조인 조건에 만족하는 행과 기준 테이블의 행을 모두 출력합니다.
left join은 왼쪽 테이블을 기준으로 합니다.
right join은 오른쪽 테이블을 기준으로 합니다.
mysql에선 full join을 지원하지 않습니다. 대신 union을 사용해 left join과 right join의 구문을 합칠 수 있습니다.
select <열목록>
from <첫 번째 테이블(left 테이블)>
<left | right > OUTER JOIN < 두 번째 테이블(RIGHT 테이블)>
on <조인될 조건>
[WHERE 검색조건]
작성할 때 OUTER는 생략 가능합니다.
한 쪽 테이블 각각의 행에 다른 쪽 테이블의 모든 행을 조인시키는 기능입니다.
행 개수가 12개과 10개인 테이블을 CROSS JOIN하면 120개의 행이 됩니다.
보통 많은 양의 데이터가 필요할 때 테스트 용도로 사용합니다.
SELECT *
FROM 테이블1
CROSS JOIN 테이블2
cross join은 on 구문을 사용할 수 없습니다.
이야~~ 짱이야 지훈이