본문 바로가기

기록/TIL

2022/03/17 TIL

📝 mySQL  JOIN

 

 

 

 

1. INNER JOIN

 

SELECT 테이블명.조회할 칼럼 
FROM 기준테이블 별칭
INNER JOIN 조인테이블 별칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키

 

카테고리 테이블

 

products 테이블

 

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;

 

left join 결과 일부분

categories 테이블을 기준으로 기준테이블의 전체 데이터와 함께 id와 category_id가 일치하는 데이터가 조회된 것을 확인 할 수 있다.

 

 

 

 

 

 

 

 

 

3. RIGHT OUTER JOIN 

 

SELECT 테이블별칭.조회할 칼럼
FROM 기준테이블 별칭
RIGHT OUTER JOIN 조인테이블 명칭 ON 기준테이블별칭.기준키 = 조인테이블별칭.기준키

 

 

left outer join 의 반대라고 생각하면 편하다. 

오른쪽 테이블(조인테이블)을 기준으로 JOIN 하여 값이 조회된다. 

결과값은 오른쪽테이블(조인테이블)의 모든 데이터와 함께 왼쪽테이블(기준테이블)과 오른쪽테이블(조인테이블)이 일치하는 데이터가 조회된다. 

 

 

 

products 테이블

 

products_images 테이블

 

 

 

 

 

 

 

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 해보고자 한다. 

 

카테고리 테이블

 

 

products 테이블

 

 

기준테이블인 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