> php教程 > PHP开发 > 본문

Oracle 기본 학습 하위 쿼리

高洛峰
풀어 주다: 2017-01-06 10:37:12
원래의
1386명이 탐색했습니다.

우선 서브 쿼리를 사용할 때 서브 쿼리는 여러 수준으로 중첩될 수 있으며 서브 쿼리는 괄호()로 묶어야 한다는 점에 유의하세요. 아래의 자세한 소개를 살펴보겠습니다.

기본 소개

1, 여기서: 하위 쿼리는 일반적으로 단일 행, 단일 열, 단일 행, 다중 열, 다중 행 및 단일 열을 반환합니다.

2; : 하위 쿼리는 단일 행, 단일 열을 반환하고, 통계 함수가 사용됨을 나타냅니다.

3, from: 하위 쿼리는 다중 행 및 다중 열 데이터를 반환합니다(테이블 구조). 🎜>4, 선택: 단일 행과 단일 열을 반환합니다(일반적으로 사용되지 않음).

세부 정보 예시

여기서(데이터 행 필터링):

a: 직원 쿼리 회사 평균 연봉보다 낮은 정보입니다.

위 쿼리는 where 절의 필터 조건으로 사용할 수 있는 단일 행과 단일 열을 반환합니다.
select * from emp where sal<(select avg(sal) from emp);
로그인 후 복사

b: 가장 먼저 고용한 직원의 정보를 쿼리합니다. 회사.

C: Scott과 동일한 직업을 갖고 있으며 동일한 급여를 받는 직원에 대한 정보를 쿼리합니다.
select * from emp where hiredate= (select MIN(hiredate) from emp);
로그인 후 복사

in: 하위 쿼리에서 반환된 동일한 내용을 나타냅니다.
select* from emp
 
where (job,sal) =( select job,sal
 
from emp
 
where ename =&#39;scott&#39;) and ename <>&#39;scott&#39;;
로그인 후 복사

not in:
select * from emp where sal in (select sal from emp where job = &#39;manager&#39;);
로그인 후 복사

하위 쿼리에는 null이 있을 수 없습니다.
select* from emp where sal not in(select sal from emp where job=&#39;manager&#39;);
로그인 후 복사

모든:

이 하위 쿼리에서 반환된 최대값보다 큽니다
select* from emp where sal = any(select sal from emp where job=&#39;manager&#39;);
 
select* from emp where sal > any(select sal from emp where job=&#39;manager&#39;);
로그인 후 복사

하위 쿼리에서 반환된 최대값보다 작습니다
select* from emp where sal < any(select sal from emp where job=&#39;manager&#39;);
로그인 후 복사

all:

all: 하위 쿼리에서 반환된 최대값보다 큼


하위 쿼리가 매우 높은 확률;


다음:

회사 평균 급여보다 높은 직위, 직위 수 및 평균 급여를 쿼리합니다.

선택(일반적으로 사용하지 않음) :
select job,count(empno),avg(sal) from emp group by job 
having avg(sal)>(select avg(sal) from emp);
로그인 후 복사

각 사원의 번호, 이름, 직급, 부서명을 조회합니다.

(1+n) 쿼리;
select e.empno,e.ename,e.job,
 
(select d.dname from dept d whered.deptno=e.deptno)from emp e;
로그인 후 복사

from(핵심):

각 부서의 이름, 위치, 인원 수를 쿼리합니다.

(다중 테이블 쿼리)
select d.dname,d.loc,count(e.empno)
 
from emp e,dept d
 
where e.deptno(+)=d.deptno
 
group by d.dname,d.loc;
로그인 후 복사

다중 테이블 쿼리와 하위 쿼리로 통계를 얻을 수 있는데 어떤 방법이 좋을까요?
分步1: select d.deptno,d.dname,d.locfrom dept d;
 
 分步2:select deptno,count(empno)from emp group by deptno;
 
 
 
正确的查询:
 
select d.deptno,d.dname,d.loc,temp.count
from dept d,(select deptno,count(empno) count from emp
group by deptno) temp
where d.deptno=temp.deptno(+);
로그인 후 복사

답변: 실제 업무에서 서브쿼리의 주된 목적은 다중 테이블 쿼리의 성능 문제를 해결하는 것이기 때문에 개발 시 가장 많이 사용됩니다. 다중 테이블 쿼리로 인해 성능에 영향을 미치는 데카르트 곱의 문제를 해결하는 것이 가장 큰 역할입니다.

복잡한 쿼리 = 단순 쿼리 + 제한된 쿼리 + 다중 테이블 쿼리 + 그룹 통계 쿼리 + 하위 쿼리

요약

위 내용은 Oracle 하위 쿼리에 대한 내용입니다. 이 문서의 내용은 Oracle을 배우거나 사용하는 모든 사람에게 도움이 될 수 있습니다. 질문이 있는 경우 메시지를 남겨서 소통할 수 있습니다.

오라클 기본학습과 관련된 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 추천
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿