[혼공SQL] 3주차 (chapter4)

Choi Seung Been·2023년 7월 18일
0

혼공단

목록 보기
3/11

이번 주도 파이팅 넘치게 3주 차 미션을 완료해 보자!
혼공족장님께서 매번 글 읽고 좋은 말씀으로 격려해 주시니 너무 힘이 납니다!!
이번 주까지하면 50%완주!!😗

JOIN에 관해 알아보는 시간을 가지자!

JOIN이란 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다.

예를 들자면 회원 테이블에는 회원의 이름과 연락처가 있고, 구매 테이블에는 회원이 구매한 물건이 있다.
물건을 배송하려면 회원 테이블의 회원 이름과 연락처, 구매 테이블의 회원이 구매한 물건에 대한 정보가 함께 필요하다.
이렇게 두 테이블을 엮어서 하나의 배송을 위한 정보를 추출하는 것이 대표적인 조인이다.

일대다 관계의 이해

두 테이블의 조인을 위해서는 테이블이 일대다(one to many) 관계로 연결되어야 한다.

예) 회원 테이블에서 몬스타엑스의 아이디는 'MX'로 1명(1, one) 밖에 없다. 그래서 회원 테이블의 아이디를 기본 키(Primary Key -> PK)로 지정한다. 구매 테이블의 아이디에서는 3개의 MX를 찾을 수 있다. 따라서 회원은 1명이지만 이회원은 구매를 여러 번(다, many)할 수 있으므로 구매 테이블의 아이디는 기본 키가 아닌 외래 키(Foreign Key -> FK)로 설정한다.

JOIN의 종류

내부조인 (일반적인 JOIN)

➡️ 두 테이블을 연결할 때 가장 많이 사용되는 것이 내부 조인이다.


🌟🌟 두 개의 테이블을 조인하는 경우 동일한 열 이름이 존재한다면 꼭 테이블이름.열_이름 형식으로 표기해야 한다!!!

외부조인

➡️ 내부 조인은 두테이블에 모두 데이터가 있어야만 결과가 나오지만 외부 조인은 한쪽에만 데이터가 있어도 결과가 나온다.
외부조인에는 LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN 이있다.

LEFT OUTER JOIN

➡️ 왼쪽에 있는 테이블을 기준으로 JOIN하라는 의미이다.

RIGHT OUTER JOIN

➡️ 오른쪽에 있는 테이블을 기준으로 JOIN하라는 의미이다.

FULL OUTER JOIN

➡️ 왼쪽 외부 조인과 오른쪽 외부 조인이 합쳐진 것이라고 생각하면 된다.
왼쪽이든 오른쪽이든 한쪽에 들어 있는 내용이면 출력한다.(단, 자주 사용되지 않음)

기타조인

➡️ 내부 조인이나 외부 조인처럼 자주 사용되지는 않지만 가끔 유용하게 사용되는 조인으로 상호 조인자체 조인도 있다.

상호 조인

➡️ 한쪽 테이블이 모든 행과 다른 쪽 테이블의 모든 행을 조인시키는 기능을 말한다.

상호 조인 결과의 전체 행 개수는 두 테이블의 각 행의 개수를 곱한 개수가 된다.

예를 들어 회원 테이블의 첫 행은 구매 테이블의 모든 행과 조인된다. 나머지 행도 마찬가지로 조인이 된다면
즉, 회원 테이블의 첫 행이 구매 테이블의 12행과 결합된다. 또 회원 테이블의 두 번째 행이 구매 테이블의 12개 행과 결합된다. 이런 식으로 회원 테이블의 모든 행이 구매 테이블의 모든 행과 결합되면 최종적으로 회원 테이블의 10개의 행과 구매 테이블의 12개 행을 곱해서 총 120개의 결과가 생성되는 것이다.

자체조인 (실무에서 자체 조인을 많이 사용하지 않음)

➡️ 내부 조인, 외부 조인, 상호 조인은 모두 2개의 테이블을 조인했다. 자체 조인은 자신이 자신과 조인한다는 의미이다. 그래서 자체 조인은 1개의 테이블을 사용한다. 또, 별도의 문법이 있는 것은 아니고 1개로 조인하면 자체 조인이 되는 것이다.

3주차 미션!

[선택미션😎]

중복된 결과 1개만 출력하기

[코드]

그룹을 좀 다양하게 넣고 싶어서 교재의 내용과는 조금 다를 수 있지만 완료!

[결과]

JOIN에 대해서 다시 복습할 수 있는 기회가 생겨 좋았고 완주 후에 한 바퀴 더 복습해야겠다고 뼈저리게 느꼈습니닷..

아자잣 파이팅👍

profile
const backEnd = require("backEnd");

4개의 댓글

comment-user-thumbnail
2023년 7월 18일

잘 읽었습니다. 좋은 정보 감사드립니다.

1개의 답글
comment-user-thumbnail
2023년 7월 18일

좋은 글 잘 읽었습니다, 감사합니다.

답글 달기
comment-user-thumbnail
2023년 7월 18일

덕분에 좋은 정보 얻어갑니다, 감사합니다.

답글 달기