DevSSOM

SQL - 두 개의 테이블 제어하기 INNER JOIN, LEFT JOIN, RIGHT JOIN 본문

DataBase

SQL - 두 개의 테이블 제어하기 INNER JOIN, LEFT JOIN, RIGHT JOIN

데브쏨 2021. 9. 1. 02:22
반응형

INNER JOIN

따로 분리되어 있는 두 개의 테이블에서 정보를 한 번에 조회하기. 

 

1) rental 테이블의 모든 컬럼을 조회하되 user테이블과 연결해 조회하기

SELECT *
FROM rental
INNER JOIN user;  /* 연결할 테이블*/

 

 

ON

두 개의 테이블을 조건을 적용해서 연결한다면, INNER JOIN + ON으로 조건을 붙여서 사용.

 

1) rental 테이블의 모든 컬럼을 조회하되 user테이블과 연결해 조회하기. 이때 user테이블의 id와 rental테이블의 user_id를 기준으로 연결하기

SELECT *
FROM rental                    /* 테이블 */
INNER JOIN user                /* 연결할 테이블 */
ON user.id = rental.user_id    /* 연결할 조건 컬럼 */

 user.id 는 user라는 테이블에 있는 id를 의미. rental.user_id는 rental 테이블의 user_id를 의미. 테이블 밑에 컬럼을 "테이블.컬럼"으로 표현해서 사용.

 

 

2) 두 테이블 salaries 테이블과 employees 테이블을 연결하여 검색해보기. 연결할 때는 salaries 테이블의 emp_no와 employees 테이블의 emp_no를 기준으로 연결

select *
from salaries
inner join employees
on salaries.emp_no = employees.emp_no;

 

 

LEFT JOIN

왼쪽 테이블의 모든 값을 포함해서 연결하기. LEFT JOIN으로 테이블을 연결하면, 데이터값이 없을 때 null값으로 표시되는 정보들이 생기는데, null값도 유의미할 때가 있기 때문에 LEFT JOIN을 사용함.

 

* INNER JOIN과의 차이

 

1) 대여기록이 없는 회원 정보를 포함해서 출력하기 -> user 테이블을 모두 출력하되 모든 user 테이블의 user_id와 rental 테이블의 id가 겹치도록 합치기

SELECT *
FROM rental                     /* 테이블 */
LEFT JOIN user                  /* 연결할 테이블 */
ON user.id = rental.user_id;    /* 연결할 조건 */

 

2) salaries 테이블의 모든 컬럼을 검색하되 employees 테이블과 연결해 검색해보기. 연결할 때에는 salaries 테이블의 emp_no와 employees 테이블의 emp_no를 기준으로, LEFT JOIN을 이용해 salaries 테이블이 중심이 되도록 연결하기

select *
from salaries
left join employees
on salaries.emp_no = employees.emp_no;

 

 

RIGHT JOIN

LEFT JOIN과 마찬가지로, 오른쪽 테이블의 모든 값을 포함해서 연결하려면 RIGHT JOIN. 더 중요한 테이블을 오른쪽에 두고, 오른쪽에 있는 테이블을 중심으로 연결.

 

 

1) rental 테이블을 모두 출력하되 모든 user 테이블의 user_id와 rental 테이블의 id가 겹치도록 합치기

SELECT *
FROM rental                      /* 테이블 */
RIGHT JOIN user                  /* 연결할 테이블 */
ON user.id = rental.user_id;     /* 연결할 조건 */

 

728x90
반응형
댓글