본문 바로가기
DataBase/Oracle

DML) UPDATE 구문

by 박채니 2022. 4. 26.

안녕하세요, 코린이의 코딩 학습기 채니 입니다.

 

개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.


UPDATE

- 특정 행을 찾아 해당 컬럼 값을 변경하는 명령

- where 절에서 특정 행에 대한 조건을 제시 (where절 생략 시 모든 행에 대해 처리)

 

UPDATE문 사용법

update	[변경할 테이블명]
set		[변경할 열1]=[데이터], [변경할 열2]=[데이터], ....
[where 조건];

 

기존 '함지민' 데이터

 

'함지민' 데이터의 dept_code, job_code 변경

update
    employee_ex2
set
    dept_code = 'D3',
    job_code = 'J3'
where
    emp_id = '301'; -- 특정 행을 한정할 때 식별자 컬럼을 자주 사용

D3, J3으로 변경

하지만 sqlplus로 접근하여 확인하였을 때는 변경 전의 데이터로 확인 됩니다.

실제 DB에는 업데이트가 되지 않았고, 메모리 상에서만 변경처리가 되었기 때문입니다. (rollback하면 원상복구됨)

실제 DB에 업데이트를 하고 싶다면, commit을 해줘야 합니다.

 

commit 후

 

 

D5 부서원 급여를 100만원 씩 인상

기존 데이터

 

변경된 데이터

update
    employee_ex2
set
    salary = salary + 1000000
where
    dept_code = 'D5';
commit;

salary가 100만원씩 인상 된 것을 확인할 수 있습니다.

 

 

모든 부서원 급여를 100만원씩 인상

기존 데이터

 

변경된 데이터

update
    employee_ex2
set
    salary = salary + 1000000;
commit;

where절 없이 사용하면 모든 데이터가 업데이트 되는 것을 확인할 수 있습니다.

 

employee_ex 테이블에서 임시환 사원의 직급을 과장, 부서를 해외영업3부로 변경

기존 데이터

select 
    e.emp_name,
    (select job_name from job where e.job_code = job_code) as 직급,
    (select dept_title from department where e.dept_code = dept_id) as 부서
from
    employee_ex2 e
where
    emp_name = '임시환';

 

변경된 데이터

update
    employee_ex2 e
set
    job_code = (select job_code from job where job_name = '과장'),
    dept_code = (select dept_id from department where dept_title = '해외영업3부')
where
    emp_name = '임시환';
commit;