테이블 조인(Join)하기
Join이란 ?
두 개 이상의 테이블에서 데이터를 결합하여 하나의 테이블로 사용할 수 있는 기능이다.
Join을 사용하면 관련된 데이터를 효율적으로 검색하고 분석할 수 있다.
조인이 필요한 이유 예를 들어보자면,
중복데이터 관리!
온라인에서 쇼핑을 할 때 고객의 데이터가 저장될 것이다.
- 고객 정보 <고객의 이름, 이메일, 주소 등...>
- 주문상품정보 <고객이 주문한 상품, 개수 등...>
고객이 상품을 주문했을 때 구매한 상품 정보만 저장하면 되는데
이 두개가 한 테이블에 저장이 된다면 이름, 이메일이 중복으로 저장이 된다.
그러므로 고객정보와 고객이 구매한 상품 정보는 따로 저장을 해준다.
고객이 가입을 하고 상품을 구매할 때 고객의 정보가 필요하기 때문에 테이블에서 아이디를 불러오는 작업을 해준다.
이것을 관계형데이터베이스라고 한다.
이제 조인(join) 을 사용해보자 !
Foreign Key 설정
test7 데이터베이스에
customers와 orders 테이블 생성
customers 테이블에 생성할 컬럼
id --> id는 항상 자동증가, PRIKey !
first_name
last_name

orders 테이블에 생성할 컬럼
id
order_date
amount
customer_id -> Foreign Keys
마지막으로 customers에 id를 불러와줄건데
customer_id라고 입력해주고 컬럼을 생성해준다.
// 데이터 타입은 당연히 customers 에서 id를 INT로 설정했기 때문에 똑같이 INT로 한다.

테이블을 생성한 데이터베이스를 더블클릭 눌러서 ER Diagram 을 누르면 두개가 있는 걸 확인할 수 있다.

Foreign Key
이제 customers에 id를 order 테이블에 연결해줄건데
orders 테이블로 이동 > Foreign Keys 클릭> 우클릭 > Create New Foreign Key


Enter a part of object name here -> 어느 테이블에서 가져올 것이냐
customers 클릭 > customer_id 클릭 > ok 클릭
연결해주고 저장한다.
그리고나서 다시 ER Diagram을 눌러서

연결된 선을 눌러보면
oders에 customers id가 customer_id로 연결되있는 걸 볼 수 있다.

두 테이블 간 조인하기
Join
- 두개 테이블을 합쳐서 조회할 때는 join 키워드를 사용해준다.
- join을 사용하면 두개의 테이블에서 공통된 값을 가져온다.
- join을 사용할 때는 on을 같이 붙여줘야한다.
기본문법은 이렇다.
select *
from 테이블1
join 테이블2
on 테이블1.컬럼명 = 테이블2.컬럼명;
두 테이블 간에 연결되어있는 각각 컬럼명을 입력하면된다.
위에서 Foreign Key를 설정한 ER Diagram을 보면 이해하기 쉽다.
아래는 orders 테이블과 customers를 조인하는 예제이다.

이때, 아래와 같이 테이블명 옆에 o, c 를 붙여서 테이블명을 줄여서 사용하면 편리하다.
|
select *
from orders o join customers c on o.customer_id = c.id; |
Left join
left join은 왼쪽 데이터는 모두 살리고 오른쪽에 다른 테이블을 합친다.
예를 들어서 가입은 했지만 주문은 하지 않은 고객이 있을 수도 있다.
주문하지 않은 고객의 데이터도 가져오고싶을 때 사용해준다.
// light join도 있지만 left join이 코드 짜기가 편해서 left join을 쓰는 게 좋다.
left 조인을 해서 실행한 결과


.
.
.

'Database > MySQL (DBeaver)' 카테고리의 다른 글
| [DBeaver] MySQL - 시간 처리하는 함수 2 (0) | 2025.01.29 |
|---|---|
| [DBeaver] MySQL - 시간 처리 하는 함수들 (0) | 2025.01.29 |
| [DBeaver] MySQL - NULL 값인 데이터 변경하는 IFNULL() 함수 (0) | 2025.01.12 |
| [DBeaver] MySQL - 페이징 처리 하는 LIMIT 키워드, offset (0) | 2025.01.12 |
| [DBeaver] MySQL - 그룹화한 데이터에 조건 적용하기 : HAVING (0) | 2025.01.12 |