>  기사  >  데이터 베이스  >  내부 조인, 왼쪽 외부 조인, 오른쪽 외부 조인 및 교차 조인의 차이점은 무엇입니까?

내부 조인, 왼쪽 외부 조인, 오른쪽 외부 조인 및 교차 조인의 차이점은 무엇입니까?

怪我咯
怪我咯원래의
2017-06-23 13:39:565330검색

내부 조인, 왼쪽 외부 조인, 오른쪽 외부 조인 및 교차 조인의 차이점

이전에는 MSSQL에서 내부 조인과 외부 조인으로 얻은 데이터 세트에 대해 명확하지 않았습니다. 나는 지난 며칠 동안 SQL 책을 다시 검토했으며 이제 생각이 매우 명확해졌습니다. 이제 모든 사람이 검토할 수 있도록 이해를 공유하겠습니다. 저처럼 SQL 연결문을 이해하지 못하는 친구들에게 도움이 되었으면 좋겠습니다. (이런 요리에 대한 튜토리얼을 올렸다고 웃기지 마세요, ㅎㅎ ​​:D) 테이블 A, B가 두 개 있습니다. 테이블 A의 구조는 다음과 같습니다. Aid: int; 식별 시드, 기본 키, 자동 증가 ID Aname: varchar 데이터 상황, 즉 A에서 select *를 사용한 기록 상황은 아래 그림 1과 같습니다.

그림 1: 테이블 A 데이터 테이블 B의 구조는 다음과 같습니다. Bid: int; 식별 시드, 기본 키, 자동 증가 ID Bnameid: int 데이터 상황, 즉 select * from을 사용한 기록 상황 B는 아래 그림 2와 같습니다.


2: Table B 데이터
Bid와 Aid를 구분하고 모두가 오해하는 것을 방지하기 위해 Bid의 시작 시드를 100으로 설정합니다. SQL에 대한 기본 지식이 있는 사람이라면 두 테이블을 연결하려면 연결 필드가 있어야 한다는 것을 알 수 있습니다. 위 테이블의 데이터를 보면 테이블 A의 Aid와 테이블 B의 Bnameid가 두 개의 연결 필드라는 것을 알 수 있습니다. 아래 그림 3은 연결된 모든 레코드 세트 간의 관계를 보여줍니다.

그림 3: 연결 관계 다이어그램
이제 내부 및 외부 연결을 하나씩 설명하겠습니다.
1. 내부 조인: 내부 조인을 사용하여 두 테이블의 공통 부분의 레코드, 즉 그림 3의 레코드 세트 C를 가져옵니다. 명령문은 다음과 같습니다. Select * from A JOIN B ON A.Aid= B.Bnameid 실행 결과는 아래 그림 4에 나와 있습니다. 실제로 A.Aid=B.Bnameid에서 *를 선택하고 A.Aid=B.Bnameid에서 *를 선택하면 됩니다. 동일합니다.

그림 4: 내부 조인 데이터
2. 외부 조인: 외부 조인에는 두 가지 유형이 있는데, 하나는 왼쪽 조인(Left JOIN)과 오른쪽 조인(Right JOIN)입니다.
(1) 왼쪽 조인( 왼쪽 JOIN): 즉, 그림 3의 공용 부분 레코드 세트 C + 테이블 A의 레코드 세트 A1입니다.
명령문은 다음과 같습니다. select * from A Left JOIN B ON A.Aid=B.Bnameid
실행 결과는 아래 그림 5에 표시됩니다.



그림 5: 왼쪽 조인 데이터
설명: In 문 A는 B의 왼쪽에 있고 이는 Left Join이므로 계산 방법은 다음과 같습니다. A 왼쪽이 B의 레코드를 조인합니다 = 그림 3 공용 부분 레코드 세트 C + 테이블 A 레코드 세트 A1
그림 3에서 , 레코드 세트 C의 기존 Aid는 2 3 6 7 8
그림 1에서 테이블 A의 모든 레코드 세트 A에 존재하는 Aid는 1 2 3 4 5 6 7 8 9

레코드에 존재하는 Aid입니다. 테이블 A의 세트 A1 = (그림 1에서, 즉 테이블 A의 All Aid) - (그림 3의 레코드 세트 C에 존재하는 지원), 최종 결과는 다음과 같습니다. 1 4 5 9
이것은 다음과 같은 기록으로 이어집니다. 그림 5에서 B에 연결된 왼쪽 = 그림 3 공용 부분 레코드 세트 C + 테이블 A 레코드 세트 A1, 최종 결과는 그림 5에 표시됩니다. NULL이 아닌 Bnameid 및 Bid를 갖는 레코드가 레코드임을 알 수 있습니다. 그림 3의 레코드 세트 C의 공개 부분에서 Bnameid와 Bid가 NULL인 Aid는 1 4 5 9입니다. 이 레코드는 테이블 A의 레코드 세트 A1에 존재하는 Aid입니다.

(2) 오른쪽 JOIN: 즉, 그림 3의 공용 부분 레코드 세트 C + 테이블 B의 레코드 세트 B1입니다.

문은 다음과 같습니다: select * from A Right JOIN B ON A.Aid=B.Bnameid 실행 결과는 아래 그림 6에 표시됩니다.


그림 6: 오른쪽 조인 데이터

설명: 문에서 , A는 B에 있고 왼쪽은 Right Join이므로 계산 방법은 다음과 같습니다. B의 오른쪽 연결 레코드 = 그림 3 공용 부분 레코드 세트 C + 테이블 B 레코드 세트 B1 그림 3에서 기존 Aid 레코드 세트 C의 값은 다음과 같습니다. 2 3 6 7 8
그림 2에서 테이블 B의 모든 레코드 세트 B에 존재하는 Bnameid는 다음과 같습니다. 2 3 6 7 8 11
테이블 B의 레코드 세트 B1에 존재하는 Bnameid = ( 그림 2에서 레코드 세트 C에 존재하는 테이블 B)-(그림 3에서는 Aid)의 모든 Bnameid를 확인하고 최종 결과는 11입니다.
이로부터 A의 레코드는 오른쪽 연결이라는 결론을 내릴 수 있습니다. 그림 6의 B = 그림 3 공용 부분 레코드 세트 C + 테이블 B 레코드 세트 B1, 최종 획득 그림 6의 결과에서 Aid 및 Aname이 NULL이 아닌 레코드는 모두 공용 부분 레코드에 있는 레코드임을 알 수 있습니다. 그림 3의 set C에서 Aid와 Aname이 NULL인 Aid 11의 레코드는 테이블 B의 레코드 세트 B1에 존재하는 Bnameid입니다.​
교차 연결: 두 테이블을 조건 없이 조인한 경우 항목 수 = 그림 1 * 그림 2

위 내용은 내부 조인, 왼쪽 외부 조인, 오른쪽 외부 조인 및 교차 조인의 차이점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.