에서는 SQL Server,때로는 그것은 필요를 검색에 추가하여,일치하는 행 타의 추종을 불허하는 행에서 하나 또는 모두의 테이블이 있습니다. 이러한 작업을 외부 조인이라고합니다.
실시예 1 과 2 는 자연 조인과 대응하는 외부 조인의 차이를 나타낸다. (이 섹션의 모든 예제는 employee_enh 테이블을 사용합니다.,)
예제 1
의 전체 세부 사항을 얻을 모든 직원의 위치를 포함하여 그들의 부서에는 작업에 같은 도시.
결과는:
를 들어 1 을 사용하여 천연 가 결과를 표시 설정의 행이 있습니다. 직원의 다른 모든 기존 생활 장소를 알고 싶다면(왼쪽)외부 조인을 사용해야합니다. 이라는 왼쪽 외부에 가입하기 때문에 모든 행 테이블에서 왼쪽에서 운영자의 반환되는지 여부와 관계없이 일치하는 행 테이블에서 오른쪽에 있습니다., 에 다른 단어가 없는 경우에 일치하는 테이블에서 하나의 오른쪽에서,외부에 가입니다 여전히 반환하는 행 테이블에서 왼쪽에서,NULL 에서 각각의 열을 다른 테이블(예제 2 참고). 데이터베이스 엔진은 연산자 왼쪽 외부 조인을 사용하여 왼쪽 외부 조인을 지정합니다.
오른쪽 외부 조인은 비슷하지만 기호 오른쪽에있는 테이블의 모든 행을 반환합니다. 데이터베이스 엔진은 연산자 오른쪽 외부 조인을 사용하여 오른쪽 외부 조인을 지정합니다.,
예제 2
의 전체 세부 사항을 얻을 모든 직원의 위치를 포함하여 그들의 부서에 대한 모든 도시는 하나 살아있는 곳만 또는 생활 및 작업소 직원
결과는:
당신이 볼 수 있듯이,없을 경우에 일치하는 행 테이블의 오른쪽에(부서,이 경우),왼쪽 외부 조직 행을 반환합니다 테이블에서 왼쪽에(employee_enh)고,열의를 다른 테이블 채워지는 NULL 값이 있습니다., 예제 3 은 오른쪽 외부 조인 작업의 사용을 보여줍니다.
를 들어 3
전체 세부 사항의 모든 부서뿐만 아니라,모든 생활하는 장소의 그들의 직원을 위해,모든 도시는 하 위치의 부서 또는 생활 및 작업소 직원
결과는:
외에 추가 왼쪽과 오른쪽 외부 조인,또한 전체 외부 조 정의되는 연합의 왼쪽과 오른쪽 외부 조인. 즉,두 테이블의 모든 행이 결과 집합에 표시됩니다., 테이블 중 하나에 해당 행이없는 경우 해당 열은 널 값으로 반환됩니다. 이 작업은 전체 외부 조인 연산자를 사용하여 지정됩니다.
모든 외부 조인 연산은 UNION 연산자와 NOT EXIST 함수를 사용하여 시뮬레이션 할 수 있습니다. 예제 4 는 왼쪽 외부 조인(예제 2)이있는 예제와 같습니다.,
를 들어 4
의 전체 세부 사항을 얻을 모든 직원의 위치를 포함하여 그들의 부서에 대한 모든 도시는 하나 살아있는 곳만 또는 생활 및 작업소 직원의:
첫 번째 선택하에서 문을 연합정 자연에 가입하는 테이블의 employee_enh 및 부과 참여에 열 거주지역과 위치에 있습니다. 이 선택 문은 동시에 각 직원의 생활 장소 및 근무 장소 인 모든 도시를 검색합니다., Union 의 두 번째 SELECT 문은 natural join 의 조건과 일치하지 않는 employee_enh 테이블의 모든 행을 추가로 검색합니다.피>