🟨 목 차 🟨
1. JOIN 이란 ?
1-1. 레코드를 조합하는 방식에 따른 JOIN 종류
2. INNER JOIN
2-1. MySQL 만의 INNER JOIN 방식
2-2. 별칭(alias)를 사용한 MySQL 만의 INNER JOIN 방식
3. LEFT JOIN
4. RIGHT JOIN
저번 시간에 MySQL 기본 문법[ CREATE DATABASE / ALTER DATABASE/ CREATE TABLE / ALTER TABLE / DROP TABLE / INSERT INTO / UPDATE/ DELETE / SELECT ] 에 대해서 알아보았습니다.
오늘 시간은 테이블 레코드(데이터)를 조합하는 방법 즉, JOIN 에 대해 알아보도록 합시다 :)
◼️ 1. JOIN 이란 ? ◼️
JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블 또는 결과 집합으로 표현을 해준다.
[ JOIN은 보통 SELECT문과 함께 자주 사용 된다. ]
◼️ 1-1. 레코드를 조합하는 방식에 따른 JOIN 종류
- INNER JOIN
- LEFT JOIN
- RIGHT JOIN
◼️ 2. INNER JOIN ◼️
INNER JOIN은 ON 절과 함께 사용되며, ON 절의 조건을 만족하는 데이터만을 가져온다.
[ 쉽게 생각해서 교집합으로 생각하자. ]
[문법]
1. 첫번째테이블이름
INNER JOIN 두번째테이블이름
ON 조건
2. 첫번째테이블이름
JOIN 두번째테이블이름
ON 조건
==> ON 절에서는 WHRER절에서 사용할 수 있는 모든 조건을 사용 가능 하다.
[ 표준 SQL 과 달리 MySQL에서는 JOIN, INNER JOIN, CROSS JOIN이 모든 같은 의미로 사용됨 ]
[Reservation테이블의 Name필드와 Customer테이블의 Name필드가 서로 일치하는 레코드 만을 INNER JOIN으로 가져오는 예제]
1. SELECT *
FROM Reservation
INNER JOIN Customer
ON Reservation.Name = Customer.Name;
2. SELECT *
FROM Reservation
JOIN Customer
ON Reservation.Name = Customer.Name;
==> 1, 2 둘다 같은 실행결과를 보여준다.
◼️ 2-1. MySQL 만의 INNER JOIN 방식
[예제]
SELECT *
FROM Reservation, Customer
WHERE Reservation.Name = Customer.Name;
◼️ 2-2. 별칭(alias)를 사용한 MySQL 만의 INNER JOIN 방식
[예제]
SELECT *
FROM Reservation AS r, Customer AS c
WHERE r.Name = c.Name;
◼️ 3. LEFT JOIN ◼️
LEFT JOIN은 첫번째 테이블을 기준으로, 두번째 테이블을 조합하는 JOIN이다.
이때 ON 절의 조건을 만족하지 않는 경우에는 첫번째 테이블의 필드 값은 그대로 가져온다. 하지만 해당 레코드의 두번째 레이블의 필드 값은 모두 NULL로 표시된다.
아래의 그림처럼 생각하면 편할 것이다.
[문법]
첫번째테이블이름
LEFT JOIN 두번째테이블이름
ON 조건
==> ON 절에서는 WHERE 절에서 사용 할 수 있는 모든 조건 사용 가능하다.
[Reservation 테이블의 Name 필드를 기준으로 Customer 테이블의 Name 필드와 일치하는 레코드만을 LEFT JOIN으로 가져온 후, 그 중에서 ReserveDate 필드의 값이 2016년 02월 01일 이후인 레코드만을 선택하는 예제]
SELECT *
FROM Reservation
LEFT JOIN Customer
ON Reservation.Name = Customer.Name
WHERE ReserveDate > '2016-02-01';
==> 원래는 두 개의 Name 값이 일치하면, INNER JOIN과 같이 두 테이블의 모든 필드를 그대로 가져오고, 두 개의 Name 값이 일치하지 않는 경우에는 Customer 테이블의 모든 필드를 NULL로 표시되지만 여기서 WHERE문을 통해 ReserveDate 필드의 값이 2016년 02월 01일 이후인 홍길동, 임꺽정 데이터만 출력이 된 것이다.
◼️ 4. RIGHT JOIN ◼️
RIGHT JOIN은 LEFT JOIN과 반대로 두번째 테이블을 기준으로, 첫번째 테이블을 조합하는 JOIN이다.
이때 ON 절의 조건을 만족하지 않은 경우에는 두번째 테이블의 필드 값은 그대로 가져온다. 하지만 해당 레코드의 첫번째 테이블의 필드값은 모두 NULL로 표시된다.
[ LEFT JOIN 과 반대로 생각하고 2번째 테이블이 중심이라 생각하면 편하다. ]
[문법]
첫번째테이블이름
RIGHT JOIN 두번째테이블이름
ON 조건
==> ON 절에서 WHERE 절에서 사용할 수 있는 모든 조건을 사용 가능하다.
[예제]
SELECT *
FROM Reservation
RIGHT JOIN Customer
ON Reservation.Name = Customer.Name;
==> 두 개의 Name 값이 일치하면 두 테이블의 모든 필드를 가져온다. 하지만 두개의 Name 값이 일치하지 않으면 Customer의 테이블의 값만 표시하고 Reservation 테이블의 모든 필드를 NULL로 표시한다.
'DB > MySQL' 카테고리의 다른 글
MySQL 다른 쿼리 내부에 포함되어 있는 SELECT문(서브쿼리) feat.Workbench (0) | 2022.08.20 |
---|---|
MySQL 여러개의 SELECT 합치기(UNION) feat. Workbench (0) | 2022.08.19 |
MySQL 기본문법 feat.Workbench (0) | 2022.08.19 |
Workbench(MySQL)로 스키마와 테이블 만들기 (0) | 2022.08.17 |
aws ec2 인스턴스(우분투 서버)에 MySQL Workbench 연동 (0) | 2022.08.16 |