조인 연산
두개 이상의 테이블을 서로 연결하는데 사용되는 기법
테이블들은 특정 규칙에 따라 서로 상호 관계를 가짐
조인 종류
CROSS JOIN
공통되는 컬럼없이 조인 조건이 없어서 모든 데이터가 조회
# address 수 * city 수 만큼의 결과값이 나옴
SELECT address, city
FROM address, city
INNER JOIN
조인하는 테이블에서 조인 조건이 일치하는 것만 조회
# 방식1
SELECT address, district, city
FROM address, city
WHERE address.city_id = city.city_id
# 방식2
SELECT address, district, city
FROM address AS a INNER JOIN city AS C
ON a.city_id = c.city_id
# 테이블 3개 이상 조인
SELECT first_name, last_name, address, distirct, city, country
FROM customer cu INNER JOIN address a
ON cu.address_id = a.address_id
INNER JOIN city c
ON a.city_id = c.city_id
INNER JOIN countru co
ON c.country_id = co.country_id
OUTER JOIN
조인하는 테이블에서 조인 조건을 만족하지 않는 행도 출력
동등 조인 조건을 만족하지 못하고 누락된 행을 출력할 때 사용
LEFT JOIN : 왼쪽 테이블을 기준으로 값을 가져옴
RIGHT JOIN : 오른쪽 테이블을 기준으로 값을 가져옴
# LEFT JOIN
SELECT address, first_name, last_name
FROM address a LEFT OUTER JOIN customer c # address를 채우고 first_name, last_name 없는건 null로 가져옴
ON a.address_id = c.address_id
# RIGHT JOIN
SELECT first_name, last_name, address
FROM customer c RIGHT OUTER JOIN address a
ON c.address_id = a.address_id
SELF JOIN
자기 자신의 테이블과 조인하는 방법
※ 셀프 조인할 시에는 별칭을 꼭 붙여줘야 함
# 예제1
SELECT c1.first_name, c2.last_name
FROM customer c1 JOIN customer c2
ON c1.first_name = c2.last_name
# 예제2
SELECT a1.address, a1.address_id, a2.city_id
FROM address a1 JOIN address a2
ON a1.adress_id = a2.city_id
출처
- 이수안 컴퓨터 연구소
MySQL 데이터베이스
www.youtube.com