02 Ago 2019

oracle 서브쿼리 예제

이 쿼리는 급여가 가장 높은 직원(또는 직원)에 대한 직원 테이블의 행을 반환합니다. 하위 쿼리는 항상 정확히 하나의 행을 반환하므로 같음 연산자(또는 해당 형제 중 하나)를 사용해야 합니다. 하위 쿼리가 항상 정확히 하나의 행을 반환한다는 보장이 없는 경우 IN 연산자가 사용해야 합니다. 가능하면 IN 연산자보다 빠르기 때문에 같음 연산자를 사용합니다. 이 하위 쿼리는 하위 쿼리1이라는 이름으로 별칭이 지정되었습니다. 이 이름은 이 하위 쿼리 또는 해당 필드를 참조하는 데 사용됩니다. 자세한 내용은 하위 쿼리및 왼쪽 조인 또는 왼쪽 외부 조인에 대한 Oracle Docs를 참조하십시오. 하위 쿼리는 단일 값을 반환하는 식을 제공하는 식이 허용되는 모든 위치에 사용할 수 있습니다. 즉, 단일 값을 반환 하는 하위 쿼리FROM 절 목록에 개체로 나열될 수도 있습니다.

하위 쿼리가 FROM 절의 일부로 사용될 때 가상 테이블이나 뷰처럼 처리되기 때문에 인라인 뷰라고 합니다. 하위 쿼리는 FROM 절, WHERE 절 또는 MAIN 쿼리의 HAVING 절에 배치할 수 있습니다. 하위 쿼리 또는 내부 쿼리 또는 중첩 쿼리는 쿼리의 쿼리입니다. SQL 하위 쿼리는 일반적으로 SQL 문의 WHERE 절에 추가됩니다. 대부분의 경우 SELECT 문을 사용하여 값을 검색하는 방법을 알고 있지만 데이터베이스의 정확한 값을 모르는 경우 하위 쿼리가 사용됩니다. 오라클은 FROM 절에서 무제한의 하위 쿼리를 허용합니다. 하위 쿼리를 단순 또는 표준이라고 하여 상관 하위 쿼리와 구별합니다. 하위 쿼리와 하위 쿼리를 포함하는 쿼리 간의 조인이 필요하지 않습니다.

이 예제에서는 SELECT 절에서 하위 쿼리를 사용하여 평균 제품의 정가를 얻었습니다. Oracle은 외부 쿼리에서 선택한 각 행에 대한 하위 쿼리를 평가합니다. Oracle IN 연산자는 하위 쿼리에서 반환된 값 목록과 열을 비교할 수 있습니다. 이 Oracle 예제에서는 가격이 카테고리 80의 제품 가격 중 하나인 모든 제품을 검색합니다. SQL 문 내에서 하위 쿼리를 만들 수 있습니다. 이러한 하위 쿼리는 WHERE 절, FROM 절 또는 SELECT 절에 있을 수 있습니다. 다음 Oracle 예제에서는 가격이 카테고리 80에 속하는 제품의 가격 중 하나 이상인 모든 제품을 검색합니다. 보시다시피 가장 비싼 제품 정보를 얻으려면 두 개의 쿼리를 별도로 실행해야 합니다. 하위 쿼리를 사용 하 여 다음 쿼리에 도시 된 대로 두 번째 쿼리 안에 첫 번째 쿼리를 중첩할 수 있습니다. select의 하위 쿼리는 두 개 이상의 행과 두 개 이상의 열을 전달할 수 없습니다. 여기서는 주 쿼리에 카운트를 전달하는데, 이 쿼리는 항상 숫자- 스칼라 값일 뿐입니다. 값을 찾을 수 없는 경우 하위 쿼리는 null을 주 쿼리로 반환합니다.

또한 하위 쿼리는 employee.empid가 외부 쿼리에서 내부 쿼리로 전달되는 쿼리에 표시된 것처럼 기본 쿼리의 from 절에서 열에 액세스할 수 있습니다. select 절에서 하위 쿼리를 사용하는 경우 Oracle은 기본적으로 왼쪽 조인으로 처리합니다(쿼리에 대한 설명 계획에서 볼 수 있음) 행의 카디널리티가 왼쪽의 모든 행에 대해 오른쪽에 하나만 있는 경우. UPDATE 문에서 단일 행 하위 쿼리에서 반환된 결과와 동일한 새 열 값을 설정할 수 있습니다. 다음은 UPDATE 문을 사용하는 하위 쿼리의 구문 및 예제입니다. IN 연산자를 사용하는 하위 쿼리는 종종 0 개 이상의 값 목록을 반환합니다. 하위 쿼리가 결과 집합을 반환한 후 외부 쿼리는 이를 사용합니다. 외부 쿼리에서 비교 연산자(단일 행 연산자라고도 함)를 사용하여 단일 값을 반환하는 하위 쿼리를 처리할 수 있습니다. 이 Oracle 예제는 범주 번호가 제품 64와 동일한 제품을 검색합니다. 인덱스는 주로 WHERE 절의 필터에서 사용 됩니다., 우리가 전에 설명 한 대로. 여기에는 중첩되거나 상호 연관된 하위 쿼리가 있는 술어도 포함됩니다.