sql

MYSQL - JOIN문

yun.seul 2023. 1. 16. 21:48
JOIN문

 

JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블이나 결과 집합으로 표현해주는 Relation Database에서 가장 많이 쓰이는 구문이다.

 

INNER JOIN(내부 조인)

 

조인하는 테이블의 ON절의 조건이 일치하는 결과만 출력한다.

INNER JOIN

select * from restaurant as a
inner join menu as b on b.restId = a.no;

A라는 RESTAURANT테이블과 B라는 MENU테이블의 restid와 no가 같은 교집합의 부분만 출력을 하도록 하는 INNER JOIN의 예시이다.

 

 

 

 

LEFT / RIGHT OUTER JOIN(외부 조인)

 

- LEFT OUTER JOIN

 

두 테이블이 합쳐질때 왼쪽이냐 오른쪽이냐를 기준으로 기준 테이블의 것은 모두 출력이 된다. 즉,  OUTER JOIN은 조인하는 테이블의 ON절의 조건 중 한쪽의 데이터를 모두 가져온다.

 

LEFT OUTER JOIN

LEFT JOIN은 두 테이블이 있을 경우, 첫 번째 테이블을 기준으로 두 번째 테이블을 조합하는 JOIN이다.

 

select a.first_name,a.last_name, b.department_name  
from employees as A
left join departments as B
on a.department_id = b.department_ID
where b.department_name = 'IT';

위의 예시는 EMPLOYEES라는 A테이블과 DEPARTMENTS라는 B테이블이 부서아이디(DEPARTMENT_ID)가 같고 부서 이름(DEPARTMENT_NAME)이 'IT'로 시작하는 모든 값을 출력하라. 하지만 부서가 해당되지않는 직원들도 모두 출력하라는 예시이다.

 

 

 

- RIGHT OUTER JOIN

RIGHT OUTER JOIN

RIGHT OUTER JOIN은 두 테이블이 있을 경우, 두 번째 테이블을 기준으로 첫 번째 테이블을 조합하는 JOIN이다

 

select *
from restaurant right outer join menu 
on menu.restId = restaurant.no;

RESTAURANT 테이블과 MENU테이블의 RESTID와 NO가 같은 값을 출력하라. 단, 지정되지 않은 RESTID가 있더라도 MENU테이블은 다 출력되게 하라는 예시이다.

'sql' 카테고리의 다른 글

MYSQL - CASE WHEN문  (0) 2023.01.16
MYSQL - transaction문  (0) 2023.01.16
MYSQL - 숫자/문자열/시간을 다루는 함수  (0) 2023.01.16
MYSQL - CAST/ CONVERT 데이터 형 변환  (0) 2023.01.13
MYSQL - UNION/GROUP BY/HAVING/DISTINCT  (0) 2023.01.12