Oracle에서 "with as" 문은 임시 테이블을 생성하고 중간 결과를 임시 테이블 공간의 문에 배치하는 것과 동일합니다. 또한 이 문을 사용하여 여러 임시 테이블을 정의할 수도 있습니다. 구문은 "with temptablename"입니다. ([필드 목록])을 (... 선택)"으로 지정합니다.
이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 11g 버전, Dell G3 컴퓨터.
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!