SQL Server(Transact-SQL)에서 JOIN은 여러 테이블에서 데이터를 검색하는 데 사용되며 SQL 명령에서 둘 이상의 테이블이 함께 연결될 때 발생합니다. 다음은 SQL Server의 4가지 유형의 JOIN입니다.
- 내부 조인 - 단순 연결 형식이라고도 함
- 왼쪽 외부 조인 - 또는 왼쪽 조인
- 오른쪽 외부 조인 - 또는 RIGHT JOIN
- 완전한 외부 조인 - 또는 전체 조인
이제 SQL Server의 JOIN을 더 잘 이해할 수 있도록 구문, 그림 및 예를 살펴보겠습니다.
내부 조인
특정 명령에서 이미 INNER JOIN을 사용했을 가능성이 큽니다. 연결 조건이 충족되면 테이블의 모든 행을 반환하는 가장 일반적인 연결 유형입니다.
INNER JOIN 구문
SELECT cot
FROM bang1
INNER JOIN bang2
ON bang1.
cot = bang2.cot;
INNER JOIN 일러스트 이미지
반환된 결과는 state1과 bang2 사이의 공통 레코드입니다.
INNER JOIN의 예
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
INNER JOIN donhang
ON nhacung.nhacung_id = d
onhang.nhacung_id;
위의 예에서 반환된 결과는 nhacung_id의 값이 2개의 테이블과 같을 때 'supplier' 테이블과 'order' 테이블의 정보 행입니다.피>
이해를 돕기 위해 특정 데이터가 포함된 예를 살펴보겠습니다.
nhacung 테이블에는 nhacung_id 및 nhacung_ten의 2가지 정보 필드가 있습니다.
nhacung_id 나쿵_텐 10000 IBM 10001 Hewlett Packard 10002 Microsoft 10003 NVIDIAdonhang 테이블은 donhang_id, nhacung_id 및 donhang_ngay의 3개 필드로 구성됩니다.
donhang_id nhacung_id donhang_ngay 500125 10000 2003/05/12 500126 10001 2003/05/13 500127 10004 2003/05/14SELECT 명령을 실행하는 경우(아래 INNER JOIN 사용)
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
INNER JOIN donhang
ON nhacung.nhacung_
id = donhang.nhacung_id;
반환된 결과 집합입니다.
nhacung_id 10 IBM donhang_ngay 10000 2003/05/12 10001 Hewlett Packard 2003/05/13nhacung_id(10002 및 10003)가 1개의 테이블에서만 사용 가능하기 때문에 테이블에서 Microsoft 및 NVIDIA 제품이 삭제되었습니다. nhacung_id 10004가 nhacung 테이블에 없기 때문에 donhang 테이블의 행 500127(donhang_id)이 제거되었습니다.
INNER JOIN의 이전 구문
INNER JOIN은 아래와 같이 기존 구문으로 다시 작성할 수 있지만 INNER JOIN 키워드가 포함된 구문을 사용하는 것이 좋습니다.
SELECT musicung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM donhang, nhacung
WHERE nhacung.n
hacung_id = donhang.nhacung_id;
왼쪽 외부 조인
일부 데이터베이스는 LEFT OUTER JOIN 대신 LEFT JOIN을 사용합니다. 이 연결 유형은 ON 조건에서 왼쪽 패널의 행을 반환하고 설정된 조건을 충족하는 나머지 테이블만 사용합니다.
구문 왼쪽 조인
SELECT cot
FROM bang1
LEFT [OUTER] JOIN bang2
ON bang1.co
t = bang2.cot;
파란색 영역의 결과로 LEFT JOIN 표시
반환된 결과는 state1과 state1에 할당된 bang2에 있는 레코드(그림의 파란색 영역)로 구성됩니다.
LEFT JOIN의 예
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
LEFT OUTER JOIN donhang
ON nhacung.nhac
ung_id = donhang.nhacung_id;
위의 예는 테이블의 모든 행과 donhang 테이블의 요구 사항을 충족하는 행만 반환합니다. 테이블의 nhacung_id 값이 donhang 테이블에 없으면 donhang의 모든 필드가 결과 테이블에 결과를 표시합니다.
아래는 구체적인 예입니다. 테이블에는 nhacung_id 및 nhacung_ten이 포함되어 있습니다.
nhacung_id 나쿵_텐 10000 IBM 10001 Hewlett Packard 10002 Microsoft 10003 NVIDIADonhang 테이블에는 donhang_id, nhacung_id 및 donhang_ngay가 포함됩니다.
donhang_id nhacung_id donhang_ngay 500125 10000 2003/05/12 500126 10001 2003/05/13아래 SELECT 명령을 실행하는 경우:
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
LEFT OUTER JOIN donhang
ON nhacung.nhacun
g_id = donhang.nhacung_id;
결과는 다음과 같습니다.
nhacung_id 나쿵_텐 10000 IBM donhang_ngay 2003/05/12 10001 Hewlett Packard 2003/05/13 10002 Microsoft 10003 NVIDIAMicrosoft 및 NVIDIA 행은 LEFT OUTER JOIN을 사용하기 때문에 결과 집합에 여전히 있습니다(왼쪽에 있는 모든 테이블 가져오기). . 한편, 이 기록의 donhang_ngay는 유효합니다.
오른쪽 외부 조인
일부 데이터베이스는 RIGHT OUTER JOIN 대신 RIGHT JOIN을 사용합니다. 이 연결 유형은 ON 조건에서 오른쪽 테이블의 행을 반환하고 설정된 조건을 충족하는 나머지 테이블만 가져옵니다.
구문 RIGHT JOIN
SELECT cot
FROM bang1
RIGHT [OUTER] JOIN bang2
ON bang1.cot =
bang2.cot;
그림 오른쪽 연결
반환된 결과는 bang2를 포함하고 레코드는 state1에 bang2에 할당됩니다(그림의 파란색 영역).
오른쪽 조인의 예
SELECT donhang.donhang_id, donhang.donhang_ngay, nhacung.nhacung_ten
FROM nhacung
RIGHT OUTER JOIN donhang
ON nhacung.nha
cung_id = donhang.nhacung_id;
반환된 결과는 donhang 테이블의 모든 행과 nhacung 테이블의 요구 사항을 충족하는 행만 반환됩니다.
donhang 테이블의 nhacung_id 값이 테이블에 없으면 목록의 모든 필드가 결과 테이블에 표시됩니다.
아래는 구체적인 예입니다. 테이블에는 nhacung_id 및 nhacung_ten이 포함되어 있습니다.
nhacung_id 나쿵_텐 10000 Apple 10001 GoogleDonhang 테이블에는 donhang_id, nhacung_id 및 donhang_ngay가 포함됩니다.
donhang_id nhcung_id donhang_ngay 500125 10000 2003/08/12 500126 10001 2003/08/13 500127 10002 2003/08/14아래의 SELECT 명령을 실행하는 경우:
SELECT donhang.donhang_id, donhang.donhang_ngay, nhacung.nhacung_ten
FROM nhacung
RIGHT OUTER JOIN donhang
ON nhacung.nhacung_id
= donhang.nhacung_id;
결과는 다음과 같습니다.
donhang_id donhang_ngay nhacung_id 500125 2003/08/12 Apple 500126 2003/08/13 Google 500127 2003/08/14행 500127(donhang_id)은 JOIN이 OUTER이기 때문에 결과 테이블에 여전히 있습니다. 사용. 해당 레코드의 nhacung_ten에 값이 포함되어 있습니다.
완전한 외부 조인
일부 데이터베이스는 FULL OUTER JOIN 대신 FULL JOIN을 사용합니다. 이 연결 유형은 좌우 테이블의 모든 행과 조건에 맞지 않는 조건으로 설정된 NULL 값을 반환합니다.
구문 전체 조인
SELECT cot
FROM bang1
FULL [OUTER] JOIN bang2
ON bang1.c
ot = bang2.cot;
풀 JOIN을 녹색 영역의 결과로 설명
반환된 결과에는 bang1 및 bang2의 모든 레코드가 포함됩니다.
전체 조인의 예
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
FULL OUTER JOIN donhang
ON nhacung.nhacung_i
d = donhang.nhacung_id;
위의 예는 테이블과 돈행의 모든 행을 반환하지만 조건이 충족되지 않으면 값이 결과 테이블로 설정됩니다.
음악 패널의 nhacung_id가 donhang 테이블에 없거나 donhang 테이블의 nhacung_id 값이 음악 패널에 없는 경우 정보 필드가 표시됩니다.피>
아래는 FULL OUTER JOIN의 구체적인 예입니다. 테이블에는 nhacung_id 및 nhacung_ten이 포함되어 있습니다.
nhacung_id 나쿵_텐 10000 IBM 10001 Hewlett Packard 10002 Microsoft 10003 NVIDIADonhang 테이블에는 donhang_id, nhacung_id 및 donhang_ngay가 포함됩니다.
donhang_id nhacung_id donhang_ngay 500125 10000 2003/08/12 500126 10001 2003/08/13 500127 10004 2003/08/14아래의 SELECT 명령을 실행하는 경우:
SELECT nhacung.nhacung_id, nhacung.nhacung_ten, donhang.donhang_ngay
FROM nhacung
FULL OUTER JOIN donhang
ON nhacung.nhacung_i
d = donhang.nhacung_id;
결과는 다음과 같습니다.
nhacung_id 나쿵_텐 10,000 donhang_ngay IBM 2003/08/12 10001 Hewlett Packard 2003/08/13 10002 Microsoft 10003 NVIDIA 2003/08/14Microsoft 및 NVIDIA 제품은 다음을 사용하고 있기 때문에 결과 집합에 있습니다. 전체 외부 조인. 그러면 이 레코드의 donhang_ngay에 값이 포함됩니다. nhacung_id의 행은 10004이며 결과 테이블에도 있지만 이러한 레코드의 nhacung_id 및 nhacung_ten에는 값이 포함되어 있습니다.