Written by
최태열
on
on
Oracle DB 7
DML
DML
데이터 조작 언어 (select/insert/update/delete)
데이터 저장 (insert)
- 데이터 입력
-- null 값 없이 데이터 입력 (column명 없어도 됨)
insert into people values ('신짱구', 5);
-- column명 특정
insert into people values ('봉미선' 29);
-- 다중 table에 한번에 데이터 insert
insert all
into emp01 (empno, ename, deptno) values (empno, ename, deptno)
****into emp02 (empno, ename, deptno) values (empno, ename, deptno)
select empno, ename, deptno from emp;
-- 조건을 주고 insert
insert all
when deptno=10 or deptno=20 then
into emp01 (empno, ename, deptno) values (empno, ename, deptno)
when deptno=20 or deptno=30 then
into emp02 (empno, ename, deptno) values (empno, ename, deptno)
select empno, ename, deptno from emp;
데이터 수정 (update)
-- 모든 값 수정
update emp01 set deptno=90;
-- 조건을 주고 수정
update emp01 set deptno=90
where ename='SMITH';
-- 동시에 수정
update emp01
set deptno = 30 ,job = 'MANAGER'
where ename='SMITH';
-- 서브쿼리를 활용한 수정
-- 부서 위치가 dallas인 사람만 1000씩 봉급 인상
update emp01
set sal=sal+1000
where deptno=(
select deptno
from dept
where loc='DALLAS'
);
데이터 삭제
-- 테이블의 모든 row 삭제
delete from emp01;
-- 특정 row 삭제
delete from emp01
where deptno=30;
-- 서브쿼리 활용
-- 부서명이 RESEARCH 부서에 소속된 사원 삭제
delete from emp01
where deptno=(
select deptno from dept where dname='RESEARCH'
);
-- 테이블의 모든 row 영구삭제
truncate table emp01;
데이터 병합
/*
merge into 병합받을 table 별칭(t)
using 데이터 제공할 table 별칭(p)
on (t.기준컬럼 = p.기준컬럼)
when matched then -- 맞으면
update set t.수량 = t.수량+p.수량
when not matched then -- 다르면
insert values(p1.판매번호, p1.제품번호, p1.수량, p1.금액);
*/
-- merge 용 테이블 생성
create table total_emp
as select *
from emp
where 1=0;
-- emp 테이블을 total_emp에 추가
merge into total_emp t
using emp e
on (t.deptno = e.deptno)
when matched then
update set t.num = t.num + e.num
when not matched then
insert values(e.deptno, e.num);
Discussion and feedback