DML(조작어)
insert into 테이블명
[(컬럼)] values (내용)
update 테이블명
set 컬럼=내용
[where 조건]
delete [from] 테이블명 where 조건.
(실제 DB에서삭제는 commit을 통해완료됨.)
-- 개발부이거나 경리부이거나 지역이 미확정된 부서 삭ㄱ제
delete dept where dname in ('개발부','연구원') or loc is null
*.subquery(서브쿼리, 이너쿼리)
mainquery~~ ~(subqurey) ~~ ;
from 안에 들어가는 서버쿼리를 인라인뷰라고 부름.
-단일행부속질의
-복수행부속질의 : in, any, all, exists
--miller가 근무하는 부서의 사원명,부서번호 조회
select ename, deptno
from emp
where deptno in
(
select deptno
from emp
where ename='MILLER'
);
ENAME DEPTNO
---------- ----------
CLARK 10
KING 10
MILLER 10
--7782 사원이 받는 급여이상을 받는 사원번호,사원명,급여,커미션 조회
1 select empno, ename, sal, comm
2 from emp
3 where sal >= (
4 select sal
5 from emp
6 where empno=7782
7* )
8 /
EMPNO ENAME SAL COMM
--------- ---------- ---------- ----------
7566 JONES 2975
7698 BLAKE 2850
7782 CLARK 2450
7788 SCOTT 3000
7839 KING 5000
7902 FORD 3000
-- MANAGER일을 하는 사원들의 평균급여보다 많이받는 모든정보조회
1 select *
2 from emp
3 where sal>=
4 (
5 select avg(sal)
6 from emp
7 group by job
8 having job='MANAGER'
9* )
SQL> /
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------- ---------- ---------- ----------
7566 JONES MANAGER 7839 81/04/02 2975 20
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7839 KING PRESIDENT 81/11/17 5000 10
7902 FORD ANALYST 7566 81/12/03 3000 20
*.서브쿼리 연산자
- in : 나열된 조건과 같은것.
- all : 조건의 모든결과일치
- any/some : 조건 하나이상 조건 만족.
- exists : 하나라도 값이 있는지.
-- MANAGER일을 하는 사원들의 급여보다 많이받는 모든정보조회
select *
from emp
where sal>any
(
select sal
from emp
where job='MANAGER'
)
/
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
------ ---------- --------- ---------- -------- ---------- ---------- ----------
7566 JONES MANAGER 7839 81/04/02 2975 20
7698 BLAKE MANAGER 7839 81/05/01 2850 30
7788 SCOTT ANALYST 7566 82/12/09 3000 20
7839 KING PRESIDENT 81/11/17 5000 10
7902 FORD ANALYST 7566 81/12/03 3000 20
-- 7698사원 밑에서 일하는 사원번호,사원명,부서번호,부서명 조회
select e.empno, e.ename, e.deptno, d.dname
from emp e join dept d on e.deptno=d.deptno and e.mgr=7698
> /
EMPNO ENAME DEPTNO DNAME
------- ---------- ---------- --------------
7499 ALLEN 30 SALES
7521 WARD 30 SALES
7654 MARTIN 30 SALES
7844 TURNER 30 SALES
7900 JAMES 30 SALES
select e.empno, e.ename, e.deptno, d.dname
from emp e, dept d
where e.empno in
(
select empno
from emp
where mgr=7698
)
and e.deptno=d.deptno
--------------
research 부서의 근무하는 모든 사원정보 조회
select e.*
from emp e join dept d on e.deptno=d.deptno and d.dname='RESEARCH'
select e.*
from emp e
where deptno in
(
select deptno
from dept d
where d.dname='RESEARCH'
)/