본문 바로가기
Do it! SQL 입문/이론

테이블을 서로 통합하는 조인 2

by Hwanii_ 2023. 6. 25.
728x90

04-1 조인

p.138 ~ 161

 

1.

외부 조인

 

INNER JOIN은 두 테이블을 조인해서 조인 조건으로 사용한 열에 있는

같은 값을 조합해서 검색 하는 방식 이다.

 

하지만,

다른 테이블에 있는 행에서 일치 항목이 아닌 행을 조합해서 검색 해야 할 때도 있다.

 

이런 경우에는 외부 조인을 사용 한다. == OUTER JOIN.

 

예를 들어,

상품을 주문한 고객과 주문하지 않은 고객을 포함해서

주문 내역을 함께 검색 하고 싶을때 !

외부 조인을 사용 한다.

 

정리 하면,

외부 조인은 열의 일치 항목을 고려 XXX.

한쪽 테이블을 다른 쪽 테이블에 조합해서 사용 OOO.

 

2.

외부 조인의 기본 형식

 

SELECT [ 열 이름 ]

FROM [ 테이블 1 ]

<LEFT, RIGHT, FULL> OUTER JOIN [ 테이블 2 ] ON [ 테이블 1.열 ] = [ 테이블 2.열 ]

WHERE [ 검색 조건 ]

 

3.

LEFT OUTER JOIN 문의 기본 개념.

 

벤 다이어그램으로 표현.

 

 

OUTER JOIN은 LEFT, RIGHT, FULL 중 한 옵션을 지정해야 한다.

 

예를들어, A, B 테이블이 좌우에 있다고 생각 하면

A 테이블을 기준으로 B 테이블을 조인하고 싶으면

LEFT를 사용하고,

B테이블을 기준으로 A테이블을 조인하고 싶으면

RIGHT를 사용 한다.

 

예시)

 

 

북 테이블의 칼럼명 NUM과

카트 테이블의 칼럼명 NUM과 비교해서

값이 같은 것을 전부 가져올건데,

OUTER JOIN은 기준이 되는것이 현재 LEFT라서

B.NUM이 된다.

 

그래서 결과값이,

B.NUM을 기준으로 해서 보여주게 된다.

 

 

오른쪽 테이블에서 해당하지 않는 값들은 모두 NULL로 뜨게 된다.

 

4.

RIGHT OUTER JOIN 문의 기본 개념.

 

RIGHT OUTER JOIN은 LEFT OUTER JOIN 원리는 같고 방향만 다르다.

 

벤 다이어그램으로 표현.

 

 

예시)

 

 

RIGHT OUTER JOIN은 오른쪽이 기준이되서,

C.NUM이 기준이 된다.

 

카트의 NUM 열에서 해당하는 ROW는 14 15 라서,

얘네를 기준으로 같은 값을 보여주게 된다.

 

만약에, 왼쪽 테이블 == 북 테이블에 없는 NUM을 Cart 테이블의 NUM 열이

가지고 있었다면,

해당 부분은 NULL로 떴을것이다.

 

5.

FULL OUTER JOIN 문의 기본 개념.

 

FULL OUTER JOIN은 LEFT OUTER JOIN과

RIGHT OUTER JOIN을 합친것이다.

 

양쪽 테이블의 일치하지 않는 행도 모두 검색 한다.

 

즉, 조인 조건에 일치하지 않는 항목과

일치하는 항목 모두가 표시된다.

 

하지만, FULL OUTER JOIN을 실제로 사용하는 일은 드물다.

 

가끔 데이터베이스의 디자인이나 데이터에

몇가지 문제가 있을때, 또는 데이터의 누락이나 오류를 찾아낼 때 사용.

 

예를들어, 잘못된 고객 번호로 주문 내역이 기록된 것이 없는지

확인하고 싶으면 이때 사용하기 적절 하다.

 

벤 다이어그램으로 표현.

 

 

MySQL은 FULL OUTER JOIN 구문을 지원 하지 않는다.

 

대신에 UNION을 사용한다.

 

UNION을 사용해서 쿼리 안에 쿼리.. 서브쿼리 느낌인데,

이건 나중에 공부해서 정리 하겠다.

 

6.

교차 조인

 

자주 사용하지는 않지만, 

각 테이블의 모든 경우의 수를 조합한 데이터가 필요할 경우

교차 조인을 사용할 수 있다.

== CROSS JOIN

 

교차 조인은 카르테시안 곱이라고도 한다.

 

7.

교차 조인의 기본 형식

 

SELECT [ 열 이름 ]

FROM [ 테이블 1 ]

CROSS JOIN [ 테이블 2 ]

WHERE [ 검색 조건 ]  

 

기본 형식을 보면, FROM 문에는 조인 조건이 없는것을 확인할 수 있다.

한 테이블에 저장된 모든 행이 다른 테이블의 행을 조인하므로, 조인 조건이 필요 없다.

 

다음은 교차 조인을 표현한 그림 이다.

 

1, 2, 3은 테이블 A의 행이고, a, b, c는 테이블 B의 행을 의미 한다.

 

 

크로스 조인은 사용할 일이 거의 없지만,

샘플 데이터를 만들거나, 각 행에 같은 숫자의 데이터를

만들어야 할 때 활용할 수 있다.

 

쉽게 말해서 모든 경우의 수를 다 돌리는 느낌이다.

 

8.

셀프 조인

 

셀프 조인은 같은 테이블을 사용하는 특수한 조인 이다.

 

셀프 조인을 사용하는 방법은 지금까지 배운 조인과 같다.

 

용어 그대로 자기 자신을 조인에 사용한다는 개념을 기억 하기.

 

주의 사항은 반드시 별칭을 사용 해야한다는 점이다.

 

별칭을 사용하지 않으면 에러가 발생 한다.

 

 

 

 

반응형

'Do it! SQL 입문 > 이론' 카테고리의 다른 글

서브 쿼리  (0) 2023.07.02
테이블을 서로 통합하는 조인  (0) 2023.06.21
SQL 시작하기  (0) 2023.06.21
SQL 시작하기  (0) 2023.06.18
나만의 SQL 실습 환경 만들기  (0) 2023.06.18