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