Home » SQL » BASIC » sql natural join 문에 대해 알아봅시다.

sql natural join 문에 대해 알아봅시다.

sql natural join 은 무엇일까요? 두 테이블에서 정보를 뽑아낼 때 join 을 한다고 했어요. 이 때 자연 조인은 아래와 같이 처리합니다.

  • 두 테이블에 공통으로 나타나는 속성들의 값들이
  • 모두 같은 것에 대해 join

이게 무슨 이야기인가? 예제를 보면서 이해해 보겠습니다.


2개의 테이블 자연 조인

먼저, a, c 테이블이 있습니다.

[그림 1] 테이블 a에 있는 데이터

먼저, a에는 3개의 레코드가 있습니다. 속성 값으로 id, a, b를 가지고 있습니다.

[그림 2] 테이블 c에 있는 데이터

다음, c에도 3개의 레코드가 있습니다. 속성 값으로 id, a, c를 가집니다. 테이블 a와 c를 natural join 했을 때 어떤 결과가 나올까요? 위에서 자연 조인은 아래와 같이 동작한다고 했어요.

  • 두 테이블에 나타난 공통된 속성들이
  • 같은 값을 가지는 것에 대해 조인

단계별로 봅시다. 먼저, 두 테이블 a, c에 나타난 공통된 속성들을 먼저 봅시다.

a에는 id, a, b가 나타났고, c에는 id, a, c가 나타났습니다. 테이블 a와 c에 나타난 공통된 속성은 id, a입니다. 속성 b는 테이블 a에서만, 속성 c는 테이블 c에서만 나타났습니다.

이제 2번째 단계. 두 테이블에서 공통된 속성 id와 a가 같은 값들을 가지는 것끼리 join 합니다.

  • 테이블 a의 1번째 레코드는 id 값이 1이고, a 값이 1입니다.
    • 테이블 c에서 id가 1이고 a 값이 1인 레코드는 1번째 뿐입니다.
    • 따라서, a 테이블의 1번째와, c 테이블의 1번째 것이 join 됩니다.
  • 테이블 a의 2번째 레코드는 id 값이 2이고, a 값이 2입니다.
    • 테이블 c에서 이 조건을 만족하는 것이 없으니 continue
  • 테이블 a의 3번째 레코드는 id 값이 3이고, a 값이 1입니다.
    • 테이블 c에서 조건을 만족하는 레코드를 찾으니까 3번째 것이지요?
    • 따라서, a 테이블의 3번째와, c 테이블의 3번째 것이 join 됩니다.

최종적인 결과는 아래와 같습니다.

이제, 실제 결과를 보겠습니다.

[그림 3] a와 c를 자연 조인 한 결과

2개의 레코드가 결과로 나옵니다.


3개의 테이블 자연 조인하기

이제 sql natural join 3개를 해 봅시다. a natural join c natural join d. 이렇게 해 볼까요?

[그림 4] 테이블 d에 있는 데이터

먼저, 테이블 d에 있는 속성과 데이터를 봅시다. d에는 id, b, c가 있습니다. 우리는 a와 c를 자연 조인하고, 그 다음에 또 d를 자연조인 하라고 했어요. 그러므로, 상황은 아래와 같이 그려집니다.

위 그림과 같은 테이블을 2개 자연 조인합니다. 이것도 똑같이 해석해 봅시다.

  • 먼저 왼쪽 테이블 (결과 view)속성은 id, a, b, c가 있고
  • 오른쪽 테이블 속성은 id, b, c가 있습니다.

따라서, 공통된 속성은 id, b, c입니다.

이제, 두 테이블에서 id와 b와 c가 같은 것들만 join 합시다. 그러면, b의 2번째 레코드와 c의 3번쨰 레코드만 join이 됨을 알 수 있습니다.

[그림 5] a, c, d를 자연 조인 한 결과

따라서, 결과는 1개의 레코드만 나오게 됩니다.

Leave a Comment

12 + 17 =