-
Oracle UPDATE 문 사용법과 다양한 예제 모음데이터 엔지니어링/SQL 2024. 11. 14. 21:59반응형
Oracle에서 UPDATE 문은 테이블의 기존 데이터를 수정할 때 사용됩니다. 기본적으로 UPDATE 문은 특정 조건에 맞는 레코드의 특정 컬럼 값을 업데이트할 수 있습니다. 구문과 함께 다양한 예제를 보여드릴게요.
기본 구문
UPDATE 테이블명 SET 컬럼명 = 값 [WHERE 조건];
- 테이블명: 데이터를 수정할 테이블 이름입니다.
- SET: 수정할 컬럼과 값을 지정합니다.
- WHERE: 조건에 따라 특정 레코드를 선택합니다. 이 조건이 없으면 모든 레코드가 업데이트되므로 주의가 필요합니다.
예제 1: 기본적인 UPDATE 문 사용
다음은 employees 테이블에서 employee_id가 100인 직원의 salary를 5000으로 수정하는 예제입니다.
UPDATE employees SET salary = 5000 WHERE employee_id = 100;
- 설명: employee_id가 100인 레코드의 salary 값을 5000으로 변경합니다.
예제 2: 여러 컬럼을 동시에 업데이트
SET 절에 여러 컬럼을 지정하여 한 번에 여러 컬럼 값을 수정할 수 있습니다.
UPDATE employees SET salary = 6000, job_id = 'SA_REP' WHERE employee_id = 101;
- 설명: employee_id가 101인 직원의 salary를 6000으로, job_id를 'SA_REP'로 업데이트합니다.
예제 3: 여러 레코드 조건에 맞춰 업데이트
다음은 department_id가 10인 모든 직원의 salary를 10% 증가시키는 예제입니다.
UPDATE employees SET salary = salary * 1.1 WHERE department_id = 10;
- 설명: department_id가 10인 모든 레코드의 salary 값을 10% 증가시킵니다.
예제 4: 서브쿼리와 함께 UPDATE 사용
다른 테이블의 데이터를 참조하여 업데이트할 수도 있습니다. 예를 들어, departments 테이블에서 department_name이 'Sales'인 부서의 department_id를 찾아, 그 부서의 모든 직원 salary를 7000으로 수정합니다.
UPDATE employees SET salary = 7000 WHERE department_id = (SELECT department_id FROM departments WHERE department_name = 'Sales');
- 설명: departments 테이블에서 department_name이 'Sales'인 department_id를 조회하고, 해당 부서에 소속된 직원들의 salary를 7000으로 변경합니다.
예제 5: CASE 문을 이용한 조건별 UPDATE
CASE 문을 활용해 여러 조건에 따라 다르게 값을 수정할 수 있습니다. 예를 들어, 직원의 department_id에 따라 salary를 다르게 수정하는 경우입니다.
UPDATE employees SET salary = CASE WHEN department_id = 10 THEN salary * 1.1 WHEN department_id = 20 THEN salary * 1.2 ELSE salary * 1.05 END;
- 설명: department_id가 10이면 salary를 10% 증가시키고, 20이면 20% 증가, 그 외의 경우에는 5% 증가시킵니다.
예제 6: 전체 레코드 업데이트
WHERE 절을 생략하면 모든 레코드가 수정됩니다. 예를 들어, employees 테이블의 모든 직원의 bonus 컬럼을 100으로 초기화하는 경우입니다.
UPDATE employees SET bonus = 100;
- 주의: WHERE 절을 생략하면 테이블의 모든 레코드가 업데이트되므로, 항상 신중하게 사용해야 합니다.
예제 7: COMMIT과 ROLLBACK
Oracle은 기본적으로 자동 커밋이 아닙니다. 따라서 UPDATE 문을 실행한 후 COMMIT을 통해 변경 사항을 저장하거나, ROLLBACK을 통해 취소할 수 있습니다.
UPDATE employees SET salary = 7000 WHERE employee_id = 102; COMMIT; -- 변경 사항 저장
UPDATE employees SET salary = 8000 WHERE employee_id = 103; ROLLBACK; -- 변경 사항 취소
- 설명: 첫 번째 예제에서는 employee_id가 102인 직원의 salary를 7000으로 변경하고 저장합니다. 두 번째 예제에서는 employee_id가 103인 직원의 salary를 8000으로 변경했지만, ROLLBACK으로 취소합니다.
예제 8: UPDATE와 JOIN 사용 (MERGE INTO 사용 예시)
Oracle에서 UPDATE JOIN 기능을 지원하지 않기 때문에, MERGE INTO를 이용해 테이블을 조인하여 업데이트하는 방법을 사용할 수 있습니다.
MERGE INTO employees e USING departments d ON (e.department_id = d.department_id) WHEN MATCHED THEN UPDATE SET e.salary = e.salary * 1.1 WHERE d.location_id = 1800;
- 설명: employees와 departments 테이블을 조인하여 location_id가 1800인 부서의 직원 salary를 10% 증가시킵니다.
요약
- UPDATE 문은 데이터를 수정할 때 사용합니다.
- WHERE 절을 사용해 조건에 맞는 레코드만 선택적으로 업데이트할 수 있습니다.
- CASE 문, 서브쿼리, MERGE INTO 등을 활용하면 더욱 복잡한 업데이트 작업도 가능합니다.
- COMMIT과 ROLLBACK으로 변경 사항을 저장하거나 취소할 수 있습니다.
이 예제들을 통해 다양한 상황에서 Oracle의 UPDATE 문을 활용하는 방법을 익히실 수 있을 거예요! 😊
반응형'데이터 엔지니어링 > SQL' 카테고리의 다른 글
[Oracle] 오류 해결 ORA-00933: SQL 명령어가 올바르게 종료되지 않았습니다. (0) 2021.02.24 MSSQL 로그파일 트랜잭션 내용 정리 (오류 해결 :트랜잭션 로그가 꽉 찼습니다.) (0) 2021.02.22 DDL, DML, DCL 이란? (0) 2019.09.21 데이터 베이스 기초 (0) 2019.09.21