Oracle UPDATE 문 사용법과 다양한 예제 모음 5가지

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;
  • 설명: employeesdepartments 테이블을 조인하여 location_id가 1800인 부서의 직원 salary를 10% 증가시킵니다.

요약

  • UPDATE 문은 데이터를 수정할 때 사용합니다.
  • WHERE 절을 사용해 조건에 맞는 레코드만 선택적으로 업데이트할 수 있습니다.
  • CASE 문, 서브쿼리, MERGE INTO 등을 활용하면 더욱 복잡한 업데이트 작업도 가능합니다.
  • COMMITROLLBACK으로 변경 사항을 저장하거나 취소할 수 있습니다.

이 예제들을 통해 다양한 상황에서 Oracle의 UPDATE 문을 활용하는 방법을 익히실 수 있을 거예요! 😊

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다