ProgramingTip

FULL JOIN과 INNER JOIN의 차이점

bestdevel 2020. 12. 13. 10:24
반응형

FULL JOIN과 INNER JOIN의 차이점


a FULL JOIN와 an 의 차이점은 INNER JOIN무엇입니까?

를하면 FULL JOIN832 개의 레코드를 사용 INNER JOIN하면 830 개의 레코드를 얻습니다.


참고 : 이들 모두는 Wikipedia : Join (SQL) 에서 사용할 수 있습니다 .

다음과 같은 세 가지 유형의 OUTER 조인이 있습니다.

  • 외부 조인
  • 오른쪽 외부 조인
  • 전체 외부 조인

키워드 OUTER는 표준을 따르는 모든 구현에서 선택 사항을 선택합니다. FULL JOIN은 FULL OUTER JOIN과 동일합니다. ( 이 답변의 나머지 부분에서 SQL에서 단어 OUTER생략 했습니다 .)

각각의 기능을 보겠습니다.

다음 두 입력 데이터 세트를 고려하십시오.

 Set "A"    Set "B"

 AA         BB
--------   --------
 Item 1     Item 3
 Item 2     Item 4
 Item 3     Item 5
 Item 4     Item 6

A에는 B에없는 항목이 있으며 그 반대의 경우도 있습니다.

이제 LEFT 조인을 사용하여 다음과 같은 SQL 문을 작성하면 :

SELECT * FROM A LEFT JOIN B ON AA = BB

다음과 같은 결과를 얻을 수 있습니다. (빈 구멍은 실제로 NULL표시입니다).

 AA         BB
--------   --------
 Item 1
 Item 2
 Item 3     Item 3
 Item 4     Item 4

AA에서 모든 행을 가져 오거나 절의 결합 왼쪽 부분 에서 모든 행을 가져옵니다 .

RIGHT 조인 사용으로 전환하는 경우 :

SELECT * FROM A RIGHT JOIN B ON AA = BB

 AA         BB
--------   --------
 Item 3     Item 3
 Item 4     Item 4
            Item 5
            Item 6

조인 절의 오른쪽 부분에서 모든 행을 가져옵니다.

그러나 두 행의 모든 ​​행을 원하면 FULL 조인을 사용합니다.

SELECT * FROM A FULL JOIN B ON AA = BB

 AA         BB
--------   --------
 Item 1            <-----+
 Item 2                  |
 Item 3     Item 3       |
 Item 4     Item 4       |
            Item 5       +--- empty holes are NULL's
            Item 6       |
   ^                     |
   |                     |
   +---------------------+

의견에서 제안했듯이 다른 가입 방법을 완료하겠습니다.

INNER 조인 :

SELECT * FROM A INNER JOIN B ON AA = BB

 AA         BB
--------   --------
 Item 3     Item 3
 Item 4     Item 4

INNER 조인을 사용하면 실제로 일치하는 행만 가져 오며 결합으로 인한 구멍은 없습니다.

CROSS 조인은 첫 번째 세트의 모든 행을 두 번째 세트의 모든 행과 일치시켜 데카르트 곱을 생성합니다.

SELECT * FROM A CROSS JOIN B

 AA         BB
--------   --------
 Item 1     Item 3      ^
 Item 1     Item 4      +--- first item from A, repeated for all items of B
 Item 1     Item 5      |
 Item 1     Item 6      v
 Item 2     Item 3      ^
 Item 2     Item 4      +--- second item from A, repeated for all items of B
 Item 2     Item 5      |
 Item 2     Item 6      v
 Item 3     Item 3      ... and so on
 Item 3     Item 4
 Item 3     Item 5
 Item 3     Item 6
 Item 4     Item 3
 Item 4     Item 4
 Item 4     Item 5
 Item 4     Item 6

또한 일치하는 항목이 없기 때문에 일치하는 열을 지정하지 않습니다.

마지막으로 NATURAL 조인은이 구문에서 일치하는 열을 지정하지 않고 열 이름에서 일치합니다. 인위적인 예에서는 동일한 열 이름이 없지만이 특정 예의 경우 두 테이블에서 열 이름이 XX라고 가정하면 다음과 같은 결과를 얻을 수 있습니다.

SELECT * FROM A NATURAL JOIN B

 +----------+------- matches on the names, and then the data
 |          |
 v          v
 XX         XX
--------   --------
 Item 3     Item 3
 Item 4     Item 4

보시다시피 INNER 조인과 동일하지만 조인 절의 일치 부분을 입력 할 필요는 없습니다.


A FULL OUTER JOINLEFT OUTER JOIN의 합집합입니다 RIGHT OUTER JOIN.

(말이 되었습니까?)

조인을 설명하는 멋진 시각적 설명 (왼쪽 하단은 전체 외부 조인을 설명 함) : http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

크레딧은 codeproject 에 대한 CL Moffatt의 블로그 게시물로 이동합니다.


차이점은 일치하지 않는 행의 동작입니다.

예를 들어, 테이블 A에 조인이 정의 된 필드의 테이블 B에 대응하지 않는 행이있는 경우 내부 조인은 행을 모두 생략하고 전체 조인은 행을 포함하지만 NULL을 사용합니다. 테이블 B의 필드 값. Viceversa 테이블 B의 일치하지 않는 행.


매우 간단한 방법으로 주요 차이점은 다음과 같습니다.

INNER JOIN- 일치하는 행만 반환합니다. 따라서 일치하지 않는 행은 포함되지 않습니다.

FULL JOIN- 왼쪽이 아닌 오른쪽 테이블에있는 행과 내부 조인 행을 넘어 오른쪽이 아닌 왼쪽 테이블에있는 행을 반환합니다.


전체 조인은 다른 테이블에 일치하는 행이없는 경우에도 두 테이블의 행을 반환합니다. 전체 조인은 동시에 오른쪽 조인과 왼쪽 조인과 같습니다. 내부 조인은 다른 테이블에 파트너가 하나 이상있는 행만 반환합니다.


내부 조인은 조인 대상 필드에 NULL을 가져 오지 않습니다. 일치하는 레코드가 없으면 원본이 테이블에 없습니다.


즉, 테이블이 아주 잘 일치합니다.

여기에 있는 Wiki 페이지 는 작동 방식에 대한 좋은 예를 보여줍니다.


표 A 및 표 B 고려

표 A-(키, 이름)

1, 데이터 1 2, 데이터 2 4, 데이터 4 5, 데이터 5

표 B-(키, F 키, 이름)

1, 1, DataA 2, 2, DataB 3, NULL, DataC 4, 4, DataD

내부 조인이 반환됩니다.

  • 1, Data1, 1, 1, DataA
  • 2, Data2, 2, 2, DataB
  • 4, Data3, 4, 4, DataD

완전한 외부 조인이 반환되는 동안

  • 1, Data1, 1, 1, DataA
  • 2, Data2, 2, 2, DataB
  • NULL, NULL, 3, NULL, DataC
  • 4, Data4, 4, 4, DataD
  • 5, 데이터 5, NULL, NULL, NULL

참고 URL : https://stackoverflow.com/questions/3022713/difference-between-full-join-inner-join

반응형