【MySQL】JOIN은 무엇인가?
JOIN은 무엇인가⁇
사내 SQL 연구회가 재개되었습니다.
이전의 공부회에서, 기본적인 SQL을 쓸 수 있었습니다만,
사실, 업무에 쿼리는 조금 어려운 곳이 있습니다.
그러므로
지금 사촌으로 어려움을 겪고 있습니까? 라고 말하면,
JOIN을 모르겠습니다. 라는 대답이 왔습니다.
그러므로
이번에는 JOIN에 대해 설명합니다.
JOIN은...
JOIN은 두 테이블을 결합합니다.
각 테이블은 자신에게 맞는 데이터를 저장하지만,
다른 테이블에서 데이터를 가져오려면 JOIN해야 합니다.
제품
product_no
이름
price
1
A
1000
2
B
5000
3
C
3000
stock
product_no
count
peceiving date
1
10
2019-10-14
2
50
2019-10-16
3
20
2019-10-17
Result
product_no
count
price
product_no
count
peceiving date
1
A
1000
1
10
2019-10-14
2
B
5000
1
10
2019-10-14
3
C
3000
1
10
2019-10-14
1
A
1000
2
50
2019-10-16
2
B
5000
2
50
2019-10-16
3
C
3000
2
50
2019-10-16
1
A
1000
3
20
2019-10-17
2
B
5000
3
20
2019-10-17
3
C
3000
3
20
2019-10-17
예를 들어,
위와 같이 두 개의 테이블이 있습니다.
이들을 JOIN하고 결합합니다.
하지만 문제가 있습니다.
A와 B의 데이터수가 각각 3개였으므로,
JOIN을 할 때 두 테이블을 결합하여 9 개의 데이터가 나왔습니다.
이런 식으로 JOIN은 두 개의 다른 테이블을 결합 할 수 있지만,
연산량이 비약적으로 증가해 버립니다.
따라서 DB를 설계할 때 JOIN을 피하기 위해 테이블의 수를 가능한 한 줄이는 것이 좋습니다.
JOIN의 종류

JOIN은 여러 종류가 있습니다.
그래서, A테이블만, B테이블만 데이터를 보고 싶은 경우는, 원래 JOIN할 필요가 없기 때문에,
자주 사용하는 JOIN을 설명합니다.
물론 RIGHT JOIN은 LEFT의 반대이므로 생략합니다.
1. Cross JOIN

앞에서 설명한 것처럼 두 테이블의 곱 집합을 실행하지만 크로스 조인입니다.
모든 케이스를 모두 표현해 주는 방법입니다.
SELECT * FROM table1 JOIN table2, ...
2. Inner JOIN

Inner JOIN은 참조 테이블과 Join 테이블의 중복 값을 나타냅니다.
결과 값은 A 테이블과 B 테이블이 모두 가지고 있는 데이터만 검색합니다.
SELECT *
FROM product
INNER JOIN stock
ON product.product_no = stock.product_no;
SELECT A.price, B.count
FROM product AS A
INNER JOIN stock AS B
ON A.product_no = B.product_no;
제품
product_no
이름
price
1
A
1000
2
B
5000
3
C
3000
stock
product_no
count
peceiving date
1
10
2019-10-14
2
50
2019-10-16
3
20
2019-10-17
Result
price
count
1000
10
5000
50
3000
20
3. LEFT OUTER JOIN

기준 테이블 값 + 테이블과 참조 테이블의 중복 값을 나타냅니다.
왼쪽 테이블을 기반으로 JOIN을합니다.
그런 다음 결과 값은 A 테이블의 모든 데이터와 A 테이블과 B 테이블의 중복 값을 갖습니다.
SELECT *
FROM product
LEFT OUTER JOIN JOIN stock
ON product.product_no = stock.product_no;
SELECT *
FROM product AS A
LEFT OUTER JOIN stock AS B
ON A.product_no = B.product_no;
제품
product_no
이름
price
1
A
1000
2
B
5000
3
C
3000
4
D
2000년
stock
product_no
count
peceiving date
1
10
2019-10-14
2
50
2019-10-16
3
20
2019-10-17
Result
product_no
count
price
product_no
count
peceiving date
1
A
1000
1
10
2019-10-14
2
B
5000
1
10
2019-10-14
3
C
3000
1
10
2019-10-14
4
D
2000년
조금 어려울 수 있지만,
실제로 자주 사용하는 SQL이므로 공부하는 것이 좋다고 생각합니다.
Reference
이 문제에 관하여(【MySQL】JOIN은 무엇인가?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ozlee/items/a7797b178ed3dcb03ff1
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
SELECT * FROM table1 JOIN table2, ...
SELECT *
FROM product
INNER JOIN stock
ON product.product_no = stock.product_no;
SELECT A.price, B.count
FROM product AS A
INNER JOIN stock AS B
ON A.product_no = B.product_no;
SELECT *
FROM product
LEFT OUTER JOIN JOIN stock
ON product.product_no = stock.product_no;
SELECT *
FROM product AS A
LEFT OUTER JOIN stock AS B
ON A.product_no = B.product_no;
Reference
이 문제에 관하여(【MySQL】JOIN은 무엇인가?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ozlee/items/a7797b178ed3dcb03ff1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)