Oracle Database에서 데이터를 수정하려면 UPDATE 문을 사용합니다. 본 글에서는 UPDATE 문법의 기본부터 실무에서 자주 사용되는 다양한 예제까지 상세히 설명합니다. 초보 개발자뿐 아니라 실무자도 바로 활용할 수 있도록 구성했습니다.
1. UPDATE 문이란?
UPDATE 문은 테이블 내 기존 데이터를 변경하는 데 사용하는 SQL 구문입니다. 데이터를 삽입하는 INSERT, 삭제하는 DELETE와 함께 DML(Data Manipulation Language)의 핵심입니다.
기본 문법
UPDATE 테이블명
SET 컬럼1 = 값1, 컬럼2 = 값2
WHERE 조건;
※ WHERE 절이 없다면 테이블 전체가 수정되므로 주의해야 합니다.
2. 단일 행 업데이트 예제
UPDATE employees
SET salary = 6000
WHERE employee_id = 101;
사 번이 101인 직원의 급여를 6,000으로 수정합니다.
3. 다중 칼럼 업데이트 예제
UPDATE employees
SET salary = 7000, department_id = 60
WHERE employee_id = 102;
사 번이 102인 직원의 급여와 부서번호를 동시에 수정합니다.
4. 조건 없이 전체 행 수정
UPDATE employees
SET salary = salary * 1.1;
모든 직원의 급여를 10% 인상합니다. WHERE 절이 없기 때문에 전체 행이 수정됩니다.
5. 서브쿼리를 활용한 UPDATE
UPDATE employees
SET salary = (SELECT AVG(salary) FROM employees)
WHERE department_id = 50;
부서 50번의 직원 급여를 전체 평균 급여로 일괄 변경합니다.
6. JOIN을 활용한 UPDATE
UPDATE (SELECT e.salary, g.grade_level
FROM employees e JOIN job_grades g
ON e.salary BETWEEN g.lowest_sal AND g.highest_sal)
SET salary = salary * 1.05;
급여 등급에 따라 매칭되는 직원의 급여를 5% 인상합니다. Oracle에서는 MERGE 또는 서브쿼리를 통해 JOIN UPDATE를 구현합니다.
7. NULL 값으로 업데이트
UPDATE employees
SET commission_pct = NULL
WHERE department_id = 80;
부서 80번 직원의 커미션 비율을 초기화합니다.
8. 날짜 데이터 업데이트
UPDATE employees
SET hire_date = TO_DATE('2020-01-01', 'YYYY-MM-DD')
WHERE employee_id = 103;
입사일자를 지정 날짜로 수정합니다.
9. 시퀀스 또는 SYSDATE 활용 예
UPDATE employees
SET updated_at = SYSDATE
WHERE department_id = 90;
90번 부서 직원들의 레코드에 시스템 시간을 기록합니다.
10. UPDATE + RETURNING INTO (PL/SQL)
DECLARE
v_salary NUMBER;
BEGIN
UPDATE employees
SET salary = 7500
WHERE employee_id = 104
RETURNING salary INTO v_salary;
END;
PL/SQL 블록에서 수정 후 값을 변수에 즉시 저장합니다.
11. UPDATE 수행 시 자주 발생하는 오류
- ORA-00904: 잘못된 칼럼명 또는 오타
- ORA-01722: 숫자 변환 오류 (문자열을 숫자 칼럼에 입력 시)
- ORA-01407: NOT NULL 제약 칼럼에 NULL을 입력했을 때
12. 트랜잭션 처리
UPDATE employees
SET salary = 8000
WHERE employee_id = 105;
COMMIT; -- 변경 확정
-- 또는
ROLLBACK; -- 변경 취소
Oracle에서는 트랜잭션 제어(COMMIT, ROLLBACK)를 통해 데이터 일관성을 유지합니다.
13. 성능 개선 팁
- 인덱스를 활용해 WHERE 절 성능 최적화
- 대량 UPDATE 시 작업을 배치 처리하거나 MERGE 문 고려
- 트리거(TRIGGER) 사용 여부 주의: 의도치 않은 로직 발생 가능
14. MERGE vs UPDATE 비교
MERGE 문은 조건에 따라 UPDATE 또는 INSERT를 수행할 수 있는 고급 SQL 구문입니다.
MERGE INTO employees e
USING new_employees n
ON (e.employee_id = n.employee_id)
WHEN MATCHED THEN
UPDATE SET e.salary = n.salary
WHEN NOT MATCHED THEN
INSERT (employee_id, salary) VALUES (n.employee_id, n.salary);
참고 출처
- Oracle 공식 문서
- Oracle UPDATE Tutorial
- 『오라클 PL/SQL 프로그래밍 6판』, 이지스퍼블리싱
'Database' 카테고리의 다른 글
[ Oracle] 오라클 TRIGGER() 실전 예제로 배우는 데이터 자동화의 핵심 기술 (0) | 2025.06.08 |
---|---|
[ Oracle] 오라클 DELETE() 문법 완전 정리: 실무에서 자주 쓰는 예제로 배우기 (0) | 2025.06.08 |
[ Oracle] 오라클 MERGE() 문법 완전 정리: INSERT와 UPDATE를 동시에 처리하기 (0) | 2025.06.08 |
[ Oracle] 오라클 INSERT() 기초부터 실전까지: 초보 개발자를 위한 SQL 가이드 (0) | 2025.06.08 |
[ Oracle] 오라클 SELECT()로 데이터 조회하기: 실무에서 자주 쓰는 패턴 (0) | 2025.06.08 |