ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 문을 활용하는 방법을 익히실 수 있을 거예요! 😊

    반응형

    댓글

Designed by Tistory.