>  기사  >  데이터 베이스  >  oracle에서 with의 사용법은 무엇입니까

oracle에서 with의 사용법은 무엇입니까

WBOY
WBOY원래의
2022-02-28 10:57:2026917검색

Oracle에서 "with as" 문은 임시 테이블을 생성하고 중간 결과를 임시 테이블 공간의 문에 배치하는 것과 동일합니다. 또한 이 문을 사용하여 여러 임시 테이블을 정의할 수도 있습니다. 구문은 "with temptablename"입니다. ([필드 목록])을 (... 선택)"으로 지정합니다.

oracle에서 with의 사용법은 무엇입니까

이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 11g 버전, Dell G3 컴퓨터.

oracle에서 with as의 사용법은 무엇인가요?

Oracle 쿼리의 with as 절은 임시 테이블을 만들고 일부 중간 결과를 임시 테이블 공간의 문에 배치하는 것과 같습니다. 쿼리에서 하위 쿼리의 이름을 지정하고 SELECT 문 앞에 놓습니다. 구문은 다음과 같습니다.

with temptablename([字段列表]) as (select ...)
select ...

with as 절을 사용하여 여러 임시 테이블을 정의할 수도 있습니다. 여러 임시 테이블을 생성할 때 후속 임시 테이블은 이전에 구축된 임시 테이블에 액세스할 수 있습니다. 구문은 다음과 같습니다.

with
temptablename1([字段列表]) as (select ...),
temptablename2([字段列表]) as (select ...)
select ...

설명:

(1) with as 절을 사용하여 생성된 임시 테이블은 검색 쿼리가 완료된 후 제거됩니다.

(2) 여러 임시 테이블을 생성하는 경우 후자는 이전에 구축된 임시 테이블에 액세스할 수 있습니다.

(3) 쿼리에 동일한 하위 쿼리가 여러 개 있을 경우 하위 쿼리 결과가 메모리 임시 테이블에 저장되고 실행 효율성이 높기 때문에 일반적으로 with as 절을 사용합니다.

사용예

어느 부서의 총 급여가 전체 부서의 평균 급여보다 높은지 쿼리:

1. as 없이

코드 및 쿼리 결과는 다음과 같습니다.

SELECT deptno,total_sal
FROM (SELECT deptno,sum(sal) as total_sal
      FROM employee
      GROUP BY deptno) temp1
WHERE total_sal>(
      SELECT avg(total_sal)
      FROM (SELECT deptno,sum(sal) as total_sal
      FROM employee
      GROUP BY deptno)
10:46:44  10        );
    DEPTNO  TOTAL_SAL
---------- ----------
    20 5701632000
Elapsed: 00:00:02.33

이 예제에서는 쿼리에 나타납니다. 두 개의 동일한 하위 쿼리입니다.

2. with as as

10:45:47 SQL> 
WITH tempA AS
     (SELECT deptno,sum(sal) as total_sal
      FROM employee
      GROUP BY deptno)
SELECT *
FROM tempA
WHERE total_sal>(
     SELECT AVG(total_sal)
     FROM tempA
10:46:02  10       );
    DEPTNO  TOTAL_SAL
---------- ----------
    20 5701632000
Elapsed: 00:00:01.42

두 쿼리를 비교해보면 with as 절을 사용하면 쿼리문이 단순화되고 쿼리 속도가 향상된다는 것을 알 수 있습니다.

추천 튜토리얼: "Oracle Video Tutorial"

위 내용은 oracle에서 with의 사용법은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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