GiYeong

JOIN 본문

CS/DB

JOIN

gy2710 2022. 6. 21. 02:14

JOIN이란 2개 이상의 테이블을 결합하여 데이터를 검색(SELECT)하는 방법이다.

검색하고 싶은 데이터가 1개의 테이블이 아니라 여러 테이블에 나누어져 있으면, 각 테이블의 컬럼을 1개씩 가져와서 해당 컬럼을 접점으로 이용하여 여러 테이블에 나누어져 있는 데이터를 검색한다.

접점으로 이용하는 컬럼은 PK(Primary Key) 또는 FK(Foreign Key)를 주로 사용한다.

 

기본적으로 어떤 JOIN인지 명시하지 않으면 INNER JOIN이 사용된다.

 

JOIN 문법

SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name = table2.column_name;

1. FROM, JOIN

JOIN은 2개의 테이블을 대상으로 합치는 기능이기 떄문에 SQL 문에 2개의 테이블이 들어가야 한다.

보통 기준이 되는 테이블명을 table1 위치에, 합치고자 하는 테이블명을 table2에 넣는다.

 

2. ON

ON은 어떤 열을 기준으로 테이블을 합칠지 설정하는 키워드이다.

 

 

JOIN을 사용하는 이유

제목 내용 작성자ID 작성자 나이
Java-1 ... gy2710 18
Java-2 ... gy2710 18
Spring-1 ... gy2710 18

위 테이블의 경우 작성자ID가 변경될 경우, 테이블의 작성자 나이를 전부 수정해야 한다.

(실제로 그럴일은 없겠지만...)

 

제목 내용 작성자ID
Java-1 ... gy2710
Java-2 ... gy2710
Spring-1 ... gy2710
ID 나이 이름
gy2710 18 이기영
admin 20 관리자

하지만 위 테이블과 같이 분리되어 있다면 게시판의 데이터 양과 관련 없이 회원 테이블에서 한번만 이름을 변경해주면 된다.

만약 게시판에서 작성자의 나이나 이름의 데이터가 필요하면, 작성자 ID를 이용해서 JOIN을 하면 된다.

 

정리를 하자면, 테이블을 분리하게 되면 용량 낭비를 줄이고 데이터를 관리하기가 편해지지만, 데이터를 보기에 매우 불편해진다. JOIN을 사용하면 여러 테이블의 데이터가 조합된 가독성 좋은 테이블을 조회할 수 있다.

'CS > DB' 카테고리의 다른 글

Redis, Memcached  (0) 2022.08.31
RDBMS / NoSQL  (0) 2022.06.21
정규화  (0) 2022.06.21
트랜잭션  (0) 2022.06.18
DB에서 인덱스를 사용하는 이유  (0) 2022.06.18
Comments