사용하는 DBMS : MySQL
사용하는 툴: Workbench 8.0 CE
사용하는 스키마: World (샘플 스키마)
사용하는 테이블: #1 city, #2 countrylanguage (샘플 테이블) + 예제 테이블
#1 테이블
#2 테이블
#1 과 #2 테이블은 CountryCode라는 칼럼을 둘다 가지고 있다. 이러한 필드 또는 칼럼을 이용하여
두개의 테이블을 이어보려고 한다. 합류한다라는 뜻의 JOIN을 사용할 것이다.
JOIN을 사용하는 목적 :
예를 들어 당신이 경찰이고 과속을 한 차량의 cctv 영상을 가지고 있다고 치자.
그러면 해당 cctv 영상을 토대로 해당 차량의 번호판을 판별해서
차량 소유주가 누구이고 그 사람이 살고 있는 주소로 벌금을 날리면 될 것이다.
그런데 차량과 해당 번호판 정보로 차량과 관련된 테이블을 조회해봤자
차량 소유주 이름만 나오지 소유주의 연락처 혹은 주소는 알 수가 없다.
차량 소유주 신상정보가 담긴 테이블을 가져와서 합친다면 차량 소유주의 신상정보 또한 알 수 있는 것이다.
이렇게 하나의 테이블로 원하는 정보를 찾을 수 없을 때 하나의 공통된 필드 혹은 칼럼을 기준으로
다른 테이블을 가져와서 하나의 테이블로 합치는 것을 JOIN이라 한다.
JOIN
JOIN은 데이터베이스 내의 여러 테이블에서 가져온 레코드를 조합하여 하나의 테이블로 표현한다.
3가지 유형의 JOIN
1. INNER JOIN
2. LEFT JOIN
3. RIGHT JOIN
INNER JOIN
모든 JOIN은 ON 절과 함께 사용되며, ON 절의 조건을 만족하는 데이터만을 가져온다.
첫번째테이블이름 JOIN 두번째테이블이름
ON 조건
SELECT Name, Population FROM city JOIN countrylanguage
ON city.CountryCode= countrylanguage.CountryCode;
INNER JOIN의 결과를 벤 다이어그램으로 나타내면 다음과 같다.
LEFT JOIN & RIGHT JOIN
LEFT JOIN은 첫 번째 테이블을 기준으로, 두 번째 테이블을 조합하는 JOIN이다.
이때 ON 절의 조건을 만족하지 않는 경우에는 첫 번째 테이블의 필드 값은 그대로 가져오고
두 번째 테이블의 필드 값은 모두 NULL로 표시된다.
첫번째테이블이름 LEFT JOIN 두번째테이블이름
ON 조건
Orders라는 테이블이 아래와 같이 있다면
LEFT JOIN의 결과를 벤 다이어그램으로 나타내면 다음과 같다.
RIGHT JOIN
LEFT JOIN의 반대 원리이다.
'개발자 전향 프로젝트' 카테고리의 다른 글
MyBatis vs JPA (2) | 2022.08.26 |
---|---|
[DBMS] MySQL 자주 쓰이는 SELECT(조회) 관련 명령어 6개 (0) | 2022.08.25 |
[DBMS] MySQL 의 기초 (1) 기본 CRUD 와 정렬 조회 (0) | 2022.08.22 |
API 와 REST API에 대해 (0) | 2022.07.27 |
[백준] [알고리즘 4344번: 평균은 넘겠지] JAVA (0) | 2022.07.11 |