오라클 left join 예제

자연 조인을 사용하는 것은 나쁜 생각이다. 다른 테이블의 열과 이름이 같은 테이블 중 하나에 새 열을 추가하는 경우 기존 자연 조인이 중단될 수 있습니다. 그것은 효과적으로 일어나기를 기다리는 버그입니다. 명시적 JOIN은 WHERE 절 대신 특정 테이블의 포함과 조인 조건을 연결합니다. INNER JOIN은 두 테이블의 조인 열에 일치하는 두 테이블의 데이터를 결합합니다. 예를 들어 책과 언어라는 두 개의 테이블이 있는 기본 라이브러리 스키마가 있습니다. 언어 테이블은 가능한 언어 이름과 고유 언어 ID의 목록일 뿐입니다. 특히 + 연산자 기호를 사용하여. 이전 예제를 사용 하지만 왼쪽 외부 조인으로 전환 하면 운영 부서를 볼 수 있습니다., 비록 그것은 아무 직원. 다른 예제에 영향을 주지 않도록 해당 추가 직원을 제거해 보겠습니다.

오라클 OCP 오라클 9i 소개: SQL 시험 가이드. 115페이지 표 3-1에는 이에 대한 좋은 요약이 있습니다. 나는 오래된 학교에 가서 인쇄 된 책을 볼 때까지 내 변환 된 SQL이 제대로 작동하지 않는 이유를 알 수 없었다! USING 절은 테이블을 조인할 때 같음을 테스트할 열을 지정합니다. 다음은 USING 절과 함께 왼쪽 조인의 구문을 보여줍니다: 비 ANSI 조인 구문은 역사적으로 오라클에서 조인을 수행하는 방식이었고 오늘날에도 여전히 매우 인기가 있습니다. 조인할 테이블은 FROM 절에 나열되고 조인 조건은 WHERE 절의 조건자로 정의됩니다. 당신이 그것을 좋아하지 않는 경우에도, 당신은 여전히 그것을 사용하는 코드가 많이 있기 때문에 익숙해해야합니다. 구문에 익숙하지 않은 경우 기존 코드를 버그 수정하는 데 어려움을 겪을 것이며 인터넷의 일부 예제는 다소 신비하게 보일 것입니다. INNER 키워드는 선택 사항입니다. 아래 예제에서는 각 직원에 대해 DEPARTMENT_NAME 및 EMPLOYEE_NAME을 반환합니다. 운영 부서에는 DEPARTMENT_ID가 40이므로 필터 조건에 의해 제거되지 않지만 이 부서에 직원이 없으므로 일치하지 않으며 결과 집합에 반환되지 않습니다.

내부 조인 … Using는 기존의 INNER 조인과 내추럴 조인 사이의 거의 절반 의 집입니다. 조인은 각 테이블에 이름이 일치하는 열을 사용하여 만들어지지만 전체 조건이 아닌 사용할 열을 지정해야 합니다. 이렇게 하면 두 테이블에 공통적인 열의 하위 집합에 조인할 수 있습니다. 자체 조인이 유효하지만 (+) 연산자는 테이블을 외부조인으로 사용할 수 없습니다. 예를 들어 다음 문이 잘못되었습니다: CROSS JOIN은 카르테시안 제품을 의도적으로 만드는 것입니다. 지정된 조인 열이 없으므로 두 테이블 간의 가능한 모든 행 조합이 생성됩니다. T1 및 T2 테이블의 행 쌍이 조인 조건어를 충족하는 경우 쿼리는 두 테이블의 행의 열 값을 결합하고 결과 집합에 이 행을 포함합니다. ANSI 외측 조인 구문은 테이블 순서에 종속되지 않으므로 오른쪽 또는 왼쪽 외부 조인에 대한 실제 개념이 없으며 외부 조인만 있습니다.

결과는 위의 표준 LEFT OUTER JOIN 예제와 동일하므로 여기에 포함되지 않습니다. 그러나 OUTER JOINS에 대한 + 연산자사용 구문에 대해 주의해야 할 중요한 측면이 있습니다. CROSS APPLY 및 OUTER APPLY 조인은 오라클에서 사용할 수 있지만 오라클 12c 이후의 응용 프로그램 코드에서만 사용할 수 있도록 지원되므로 한동안 응용 프로그램 코드에서 볼 수 없습니다. 암시적 조인 구문에서 RIGHT 대 LEFT를 결정하는 데 중요한 사항에 대해 몇 가지 혼란을 보았습니다. 초보자의 경우, 내 개인적인 의견은 ANSI 조인 구문에 초점을 맞추어야하지만 비 ANSI와 동등한 것을 알고 있어야합니다. 이 문서에서는 각 예제에 대한 ANSI 및 비 ANSI 구문을 보여 드리겠습니다. 내부 조인의 경우 ON에 배치된 조건은 WHERE 절에 배치된 조건과 동일한 효과를 가집니다.