Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- R
- Python
- 파이썬
- 빅데이터 분석 기사
- Numpy
- 빅분기
- sklearn
- 실습
- level 2
- 프로그래머스
- 알고리즘
- 카카오
- level 1
- 코딩테스트
- 머신러닝
- seaborn
- python3
- oracle
- SQL
- Oracel
- 튜닝
- 오라클
- Kaggle
- 실기
- pandas
- matplotlib
- 데이터 분석
Archives
- Today
- Total
라일락 꽃이 피는 날
[Oracle] 데이터 입력/수정/삭제 한 번에 하기 (Merge) 본문
728x90
merge
insert, update, delete 명령어를 한 번에 수행하는 SQL 이다.
주로 대용량 데이터를 한 번에 update 하는 SQL의 성능을 개선하기 위해서 사용한다.
예제 1. 사원 테이블에 loc 컬럼 추가
alter table 테이블명
add 컬러명 데이터타입(크기);
alter table emp
add loc varchar2(10);
예제 2. 사원 테이블에 추가한 loc 컬럼의 데이터를 해당 사원의 부서 위치 값으로 갱신
merge into emp e # emp 테이블을 merge 하는데
using dept d # dept 테이블을 사용해라
on (e.deptno = d.deptno) # 이때 두 테이블의 연결 고리는 deptno 이다
when matched then # on 절에 나온대로 emp 테이블의 deptno 가 dept 테이블의 deptno 와 매칭 된다면
update set e.loc = d.loc; # emp 테이블의 loc 를 dept 테이블의 loc 로 갱신해라
예제 3. emp_test 의 월급을 emp 테이블의 월급으로 갱신하고, emp 테이블에는 존재하는 사원인데 emp_test 에는 없는 사원은 새롭게 입력
create table emp_test
as
select *
from emp
where deptno in (10,30);
update emp_test
set sal = 0;
commit;
select * from emp_test;
merge into emp_test t
using emp e
on (t.empno = e.empno)
when matched then
update set t.sal = e.sal
when not matched then
insert (t.empno, t.ename, t.sal, t.job, t.comm, t.hiredate, t.mgr, t.deptno)
values (e.empno, e.ename, e.sal, e.job, e.comm, e.hiredate, e.mgr, e.deptno);
728x90
'프로그래밍 > Oracle' 카테고리의 다른 글
[Oracle] 서브 쿼리를 사용하여 데이터 활용 (0) | 2022.06.03 |
---|---|
[Oracle] Select For Update (0) | 2022.06.03 |
[Oracle] 데이터 저장 및 취소 (0) | 2022.06.03 |
[Oracle] 데이터 삭제 (0) | 2022.06.03 |
[Oracle] 데이터 입력/수정 (0) | 2022.06.03 |