where,insert,delete,update,select 하위 조회,관련 하위 조회,페이지 별 조회,집합 조회

3764 단어 Oacle 노트
하위 조회
고급 조회:하위 조회(여러 select 출현)
where 자구 에서 하위 검색 사용
SMITH 와 같은 부서 에 있 는 직원 정보 조회
select * from emp where deptno=
(
select deptno from emp where ename='SMITH'

);
SCOTT 보다 월급 이 높 은
select * from emp where sal>
(
select sal from emp where ename=‘SCOTT’
);
10 호 부서 임금 과 같은
select * from emp where sal=
(
select sal from emp where deptno=10
);이 방법 은 틀림없이 틀 렸 을 것 이다.관 계 를 연산 자 를 사 용 했 으 니 결 과 는 하나 일 수 밖 에 없다.
하위 검색 결과 가 한 줄 이 아 닙 니 다.
해결 방법:(=-in>-any(some),all)
select * from emp where sal in
(
select sal from emp where deptno=10
);
10 호 부서 보다 임금 이 높 은
select * from emp where sal >
any(
select sal from emp where deptno=10
);10 호 부서 임 의(최저)임금 보다 높 은 것 으로 나 타 났 다.
select * from emp where sal >
all(
select sal from emp where deptno=10
);10 호 부서 의 모든 사람 보다 임금 이 높다 는 것 을 알 아 냈 다.
SMITH 와 같은 부서 에 있 는 직원 조회
select * from emp where deptno=(select deptno from emp where ename=‘SMITH’)and job=(select job from emp where ename=‘SMITH’);
select * from emp where(deptno,job)=(select deptno,job from emp where ename=‘SMITH’);
insert 자구 에서 하위 검색 사용 하기
시험 값 에 삽입(stuid from stuid where stuname='Lis'),'JAVA',88);
delete 자구 에서 하위 검색 사용 하기
delete from emp where deptno=(select deptno from dept where loc=‘NEW YORK’);
delete from emp where deptno in(select deptno from dept where loc=‘NEW YORK’);
update 자구 에서 하위 검색 사용 하기
update emp set sal=sal+100 where deptno in(select deptno from dept where loc=‘NEW YORK’);
select 자구 에서 하위 검색 사용 하기
select ename,job,(select dname from dept where deptno=emp.deptno)as 부서 from emp;
평균 임금 을 조사 하 다
emp 에서 평균 임금 으로 ename,job,sal(select avg(sal)을 선택 하 십시오.
select ename,job,sal,(select avg(sal)from emp where deptno=e.deptno)as 부서 평균 임금 from emp e;
관련 서브 조회
본 부서 의 평균 임금 보다 높 은 직원 임금 을 조회 하 다.
select * from emp e where sal>(select avg(sal) from emp where deptno=e.deptno);
하나의 조회 결 과 는 임시 표 로 볼 수 있 으 며,임시 표 에서 데 이 터 를 조회 할 수 있 으 며,임시 표 와 다른 표를 연합 하여 조회 할 수 있다.
페이지 별 조회⭐
rownum 줄 번호
페이지 당 5 줄,첫 페이지 표시
2 이상 의 조건 을 쓸 수 없습니다.
select * from emp where rownum<=5;
임금 순 으로 상위 5 개 를 더 받다
select t.* ,rownum from(
select * from emp order by sal
)t where rownum<=5;
제2 페이지 보기
select* from(
select t.* ,rownum as rn from(
select * from emp order by sal
)t
)t2 where t2.rn between 6 and 10;
row_줄 번호
select emp.*,row_number() over(order by sal asc) as rn from emp;
페이지 를 나누다
select* from(
select emp.*,row_number() over(order by sal asc) as rn from emp;
)t2 where t2.rn between 6 and 10;
각 부서 에서 임금 이 가장 높 은 직원 의 정 보 를 조회 하 다.
방법
select * from emp
inner join(
select deptno,max(sal) as maxsal from emp group by deptno)t
on emp.deptno=t.deptno and emp.sal=t.maxsal;
방법
select * from emp
where (deptno,sal) in
(
select deptno,max(sal) as maxsal from emp group by deptno
)
집합 조회
모으다
union
union all
합병 은 두 개의 표 일 수 있다.
select * from emp where sal>2000
union
select * from emp where ename like ‘S%’;
직원 이름,임금,직위,다른 표 dname,평균 임금
select ename,sal,job from emp
union
select dname,’’,avg(sal) from dept inner join emp on emp.deptno=dept.deptno group by dname;
교차 하 다
intersect
두 조건 모두 만족
select * from emp where job=‘CLERK’
intersect
select * from emp where sal>2000;
차 집
minus
첫 번 째 결과 에서 두 번 째 결 과 를 자 르 고 나머지 는...
select * from emp wher deptno=10
minus
select * from emp where sal<2000;

좋은 웹페이지 즐겨찾기