📝 mySQL JOIN
1. INNER JOIN
SELECT 테이블명.조회할 칼럼
FROM 기준테이블 별칭
INNER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키
SELECT categories.name, products.korean_name, products.english_name
FROM products
JOIN categories ON categories.in = products.category_id
products 테이블의 category_id 와 categories 테이블의 id 와 일치하는 값을 JOIN 하여 조회한다.
++ 심화 WHERE 조건 주기
SELECT categories.name, products.korean_name, products.english_name
FROM products
JOIN categories ON categories.in = products.category_id
WHERE categories.id = 2;
join 한 데이터 중에서 categories테이블의 id 가 2인 값만 조회되는 것을 확인할 수 있다.
2. LEFT OUTER JOIN
SELECT 테이블별칭.조회할 칼럼
FROM 기준테이블 별칭
LEFT OUTER JOIN 조인테이블 명칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키
왼쪽테이블(기준테이블)을 기준으로 JOIN 하여 기준테이블의 모든 데이터와 기준테이블과 조인테이블이 일치하는 값이 조회한다.
SELECT categories.name, products.korean_name
FROM categories
LEFT OUTER JOIN products ON categories.id = products.category_id;
categories 테이블을 기준으로 기준테이블의 전체 데이터와 함께 id와 category_id가 일치하는 데이터가 조회된 것을 확인 할 수 있다.
3. RIGHT OUTER JOIN
SELECT 테이블별칭.조회할 칼럼
FROM 기준테이블 별칭
RIGHT OUTER JOIN 조인테이블 명칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키
left outer join 의 반대라고 생각하면 편하다.
오른쪽 테이블(조인테이블)을 기준으로 JOIN 하여 값이 조회된다.
결과값은 오른쪽테이블(조인테이블)의 모든 데이터와 함께 왼쪽테이블(기준테이블)과 오른쪽테이블(조인테이블)이 일치하는 데이터가 조회된다.
SELECT products.korean_name, product_images.image_url
FROM products
RIGHT OUTER JOIN product_images ON products.id = products_images.products_id;
product_images 테이블 전체 데이터와 함께 products_id 와 products 테이블의 id 가 일치하는 데이터가 조회된 것을 확인할 수 있다.
4. CROSS JOIN
SELECT 테이블별칭.조회할 칼럼
FROM 기준테이블 별칭
CROSS JOIN 조인테이블 별칭
모든 경우의 수를 조회하는 JOIN 이다.
기준테이블의 데이터 한 row 를 조인테이블 전체와 join 하는 방식이다.
결과값은 N * M
categories 테이블을 기준으로 products 테이블을 cross join 해보고자 한다.
기준테이블인 categories 의 row 값 하나하나가 products 전체에 조인되어 조회된 것을 확인할 수 있다.
'기록 > TIL' 카테고리의 다른 글
[오류기록] Cannot read properties of undefined (0) | 2022.05.22 |
---|---|
2022/03/20 TIL (0) | 2022.03.20 |
2022/03/14 TIL (0) | 2022.03.14 |
2022/03/11 TIL (0) | 2022.03.11 |
2022/03/09 TIL (0) | 2022.03.09 |