Join이란?
- Join이란 테이블 간의 관계성에 따라서 복수의 테이블을 결합하여 하나의 테이블로 결과를 만드는 것
- A 테이블과 B테이블을 Join하여 C테이블이 결과로 나오게 된다
Join의 종류
- Join의 기본이 되는 OUTER JOIN과 INNTER JOIN부터 알아보자
- OUTER JOIN
- 기준이 되는 컬럼에 조건에 부합하는 결과가 없어도 데이터를 가져와서 NULL로 표시한다
- 결과 테이블에 두 테이블의 모든 컬럼이 들어간다
- LEFT JOIN과 RIGHT JOIN이 있다
- LEFT JOIN
- 결과 테이블에 두 테이블의 모든 컬럼이 들어간다
- JOIN문 기준으로 왼쪽에 있는 테이블의 기준 컬럼을 모두 돌며 오른쪽에 있는 테이블의 기준 컬럼에서 일치하는 내용이 있다면 찾아서 붙인다
- 왼쪽 테이블의 내용 전부 + 오른쪽 테이블의 내용 중 기준에 부합하는 내용 추가
- RIGHT JOIN
- JOIN문 기준으로 오른쪽에 있는 테이블의 기준 컬럼을 모두 돌며 왼쪽에 있는 테이블의 기준 컬럼에서 일치하는 내용이 있다면 찾아서 붙인다
- 오른쪽 테이블의 내용 전부 + 왼쪽 테이블의 내용 중 기준에 부합하는 내용 추가
- INNTER JOIN
- 두 개의 테이블에서 선정된 기준 컬럼을 모두 돌며 두 컬럼 모두 기준에 부합하는 값이 있는 데이터만 결과로 가져온다
- 오른쪽 테이블과 왼쪽 테이블 내용이 모두 기준에 부합하는 데이터만 추가
- 새로운 2개의 테이블
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`id` tinyint(4) NOT NULL,
`name` char(4) NOT NULL,
`sex` enum('남자','여자') NOT NULL,
`location_id` tinyint(4) NOT NULL,
`birthday` datetime NOT NULL,
PRIMARY KEY (`id`)
)
DROP TABLE IF EXISTS `location`;
CREATE TABLE `location` (
`id` tinyint UNSIGNED NOT NULL AUTO_INCREMENT ,
`name` varchar(20) NOT NULL ,
`distance` tinyint UNSIGNED NOT NULL ,
PRIMARY KEY (`id`)
)
- 실제 SQL
- 실행 과정 이해
- 두 테이블의 모든 컬럼을 갖는 결과 테이블을 생성한다
- student 테이블의 모든 내용을 결과 테이블에 붙인다
- s.location_id 컬럼을 순회한다
- s.location_id = l.id 를 만족하는 값이 있다면 location 테이블에서 해당 데이터를 가져와서 결과 테이블을 채운다
- s.location_id = l.id 를 만족하는 값이 없다면 NULL로 값을 채운다
- ( INNER JOIN 에서는 아래 과정을 진행하지 않는 것 )
SELECT s.id, s.name, l.address, l.distance FROM `student` as s
INNER JOIN `location` as l
ON s.location_id = l.id ;
'TIL > SQL' 카테고리의 다른 글
[SQL] SQL 기본 ( 인덱스 ) (0) | 2025.01.26 |
---|---|
[SQL] SQL 기본 ( 데이터 CRUD ) (0) | 2025.01.26 |
[SQL] SQL 기본 ( 데이터베이스와 테이블 생성, 삭제 ) (0) | 2025.01.25 |
[SQL] 데이터베이스란? (0) | 2025.01.25 |