일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 노마드코드
- Cache
- Race Condition
- 아임포트
- redis
- 재태크
- CU
- Python
- django
- 사업
- redis transaction
- transaction
- restful
- Watcha pedia
- 북클럽
- 주식
- HTTP
- 노개북
- 레일즈
- memcached
- 레일즈 캐시
- rails cache
- 노마드코더
- Rails
- trouble shooting
- API
- 투자
- iamport
- 경제
- Today
- Total
Stay hungry, Stay foolish
<MYSQL> Join 본문
MYSQL 은 RDBMS 관계형 데이터베이스다
즉 ! Table 끼리는 물론 다른 DB 들과도 관계를 가지고 있도록 설계 가능하다는 이야기다
물론 소규모 프로젝트만 진행을 해 본 상태라 실제 결제 DB, 상품 DB, 유저 DB 등이 나눠져 있는 서비스를 본 적은 없지만
실제 큰 서비스에서는 위와같이 각각의 DB 자체가 분리가 되어 있고 그 기능에 따라 table 이 구성되어져 있지 않을까 싶다.
당장에 내가 진행한 조그마한 프로젝트 내에서도 초반에 모델링을 통해 Categories - Products 로 두가지의 테이블을 작성했지만
이 테이블이 자가 증식 하며 Categories - SubCategories - Products - Images - ProductCollections 와 같이 늘어나는 것을
보면서 프로젝트를 시작하는 단계에서 해당 아키텍쳐를 얼마나 잘 설계했는지에 따라 추후 기능 등의 확장이 어려워질 수도 간단해 질 수도
있을 것 같다는 생각이 들었다.
여튼 그래서 RDBMS 는 뭐다? 관계형 데이터베이스 시스템이다
그래서 중요한건 뭐다? 유연하게 DB를 관리하는게 장점인 이 시스템을 잘 이용하기 위해서는 Join 문법이 기본 of 기본이다
물론... 나도 아직 join 문법을 능숙하게 다루진 못하지만 추후 있을 project 에서는 적극적으로 사용해볼 예정이다.
다중 테이블 연산
Join
- Join은 두 개의 table들을 연결(join)해서 두 table의 레코드를 읽어 들이고 싶을 때 사용합니다.
- INNER JOIN: 기준이 되는 테이블 (left table)과 join이 걸리는 테이블(right table) 양쪽 모두에 matching되는 row만 select가 됨.
- LEFT JOIN: 기준이 되는 테이블 (left table)의 모든 row와 join이 걸리는 테이블(right table)중 left table과 matching되는 row만 select가 됨.
- RIGHT JOIN: join이 걸리는 테이블(right table)의 모든 row와 기준이 되는 테이블 (left table)에서 right table과 matching되는 row만 select가 됨.
- FULL (OUTER) JOIN: 기준이 되는 테이블 (left table)과 join이 걸리는 테이블(right table) 양쪽 모두의 모든 row를 select 한다.
Join 기본 문법
SELECT
테이블이름.조회할 테이블,
테이블이름.조회할 테이블
FROM 기준테이블 이름
(INNER, LEFT, RIGHT FULL) JOIN 조인테이블 이름
ON 기준테이블이름.기준키 = 조인테이블이름.기준키;
예시) SELECT users.id, users.name, users.age, users.gender, accounts.account_type FROM users JOIN accounts ON accounts.id = users.account_id;