Database/MySQL

[MySQL] 테이블 합치기, 테이블 연결, 결합하는 join과 left join 방법과 예시

Mei99 2024. 5. 16. 14:21

join  :  두 개 이상의 테이블을 결합하여 하나로 집합하는 연산

from  A테이블  left join  B테이블 : 왼쪽에 있는  A테이블의 모든 데이터를 보여주고, 일치하는 B테이블의 데이터를 결합한다.

from  A테이블  right join  B테이블  : 오른쪽에 있는  B테이블의 모든 데이터를 보여주고, 일치하는 A테이블의 데이터를 결합한다.

 

MySQL 테이블 결합하기  join과 left join 

- from 테이블1 join 테이블2 on 테이블1.외래키 = 테이블2.참조컬럼;

두 테이블을 결합하기 위해서는 foreigh key(외래키)가 필요하다.

 

 

테이블 명이 긴 경우에는 'as 약자'로 줄여서 사용해도 된다.

as 는 사용해도 되고, as 생략해도 된다.

 

 

 

orders 테이블은 o로 변경, customers 테이블은 c로 변경했고, 

select 뒤에 확인하고 싶은 컬럼만 선택했다.

 

 

 

그런데, 두 개 테이블을 join으로 결합하면, 공통으로 들어있는 데이터만 가져온다.
즉, o.cutomer_id와 c.id 컬럼에 둘 다 존재하는 데이터만 볼 수 있다. 

 

예로, 회원가입만 하고 주문을 한 번도 하지 않은 사람들은 볼 수 없다.
따라서 모든 고객 데이터를 가져오되, 주문 안 한 고객 정보도 볼 수 있는 방법이 left join, right join 이다.

 

 


- from customers left join orders 

: 왼쪽에 있는 customers 테이블의 모든 고객 데이터는 가져오되, 주문 안 한 고객은 orders 테이블 데이터값이 없어서 null로 매칭된다. 

 

 

 

- from customers right join orders 

: orders 테이블의 모든 주문 데이터와 매칭되는 customers 데이터값을 가져와서, 고객 정보가 중복될 수 있다. 

 

 

 

where 조건식  으로 원하는 조건의 데이터만 가져올 수도 있다.