DevSSOM
SQL - 두 개의 테이블 제어하기 INNER JOIN, LEFT JOIN, RIGHT JOIN 본문
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; /* 연결할 조건 */
'DataBase' 카테고리의 다른 글
SQL - 집합 연산자 : UNION, UNION ALL, INTERSECT, EXCEPT (0) | 2021.09.04 |
---|---|
SQL - STANDARD SQL (0) | 2021.09.03 |
SQL - 서브쿼리와 서브쿼리 분류(스칼라 서브쿼리) (0) | 2021.09.02 |
SQL - 그룹으로 만들기 GROUP BY, 그룹에 조건 걸기 HAVING (0) | 2021.08.31 |
SQL - 함수 : COUNT, LIMIT, SUM, AVG, MAX, MIN (0) | 2021.08.30 |
SQL - 데이터 정렬하기, ORDER BY (0) | 2021.08.29 |
SQL - 데이터 수정하기 : INSERT, UPDATE, DELETE (0) | 2021.08.29 |