ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Oracle - Update 정복하기
    DataBase/Oracle 2024. 9. 2. 23:38
    반응형

    Update

    오라클 데이터베이스에서 UPDATE 문은 기존 테이블의 데이터를 수정하는 데 사용됩니다. 이 명령문은 특정 조건에 맞는 하나 이상의 레코드의 값을 변경할 수 있습니다. 기본적인 UPDATE 문의 형식은 다음과 같습니다:

    UPDATE 테이블명
    SET 컬럼명1 = 값1, 컬럼명2 = 값2, ...
    WHERE 조건;

    주요 구성 요소:

    1. 테이블명: 데이터를 수정할 테이블의 이름을 지정합니다.
    2. SET 절: 수정할 열과 해당 열에 설정할 값을 지정합니다. 여러 개의 열을 수정하려면 쉼표로 구분하여 나열합니다.
    3. WHERE 절: 특정 조건에 맞는 레코드만 수정하도록 합니다. 이 절을 생략하면 테이블의 모든 레코드가 수정됩니다.

    예시:

    UPDATE employees
    SET salary = salary * 1.1
    WHERE department_id = 10;

    이 명령은 employees 테이블에서 department_id가 10인 모든 직원의 급여를 10% 인상합니다.

    주의 사항:

    • WHERE 절을 생략하면 테이블의 모든 레코드가 수정되므로, 필요하지 않은 레코드가 변경되지 않도록 주의해야 합니다.
    • 업데이트된 데이터는 되돌릴 수 없으므로, 중요한 데이터를 업데이트하기 전에 백업을 고려하는 것이 좋습니다.
    • 트랜잭션을 사용하여 여러 업데이트를 그룹화하고, 필요한 경우 변경 사항을 취소할 수 있습니다.

     

     

     


    문제풀이

     

    기본적으로 문제풀이 실습에 사용할 테이블을 만들어준다.

    DROP TABLE emp01;
    
    CREATE TABLE emp01
    AS 	
    SELECT * FROM emp;

     

     

    문제 1

    사원들의 부서 번호를 40으로 변경한다.
    UPDATE emp01 
    SET deptno = 40;
    SELECT * FROM emp01;

     

     

    문제 2

    사원들의 입사일을 오늘로 변경한다.
    UPDATE emp01
    SET hiredate = sysdate;
    SELECT * FROM emp01;

     

     

    문제 3

    사원들의 직무를 모두 개발자로 변경한다.
    UPDATE EMP01 
    SET job = '개발자';
    SELECT * FROM emp01;

    새로운 실습을 위해 다시 drop 후 테이블 생성

    DROP TABLE emp01;
    CREATE TABLE emp01
    AS
    SELECT * FROM emp;

     

     

    문제 4

    사원들의 부서 번호를 40, 입사일을 오늘, 직무를 개발자로 변경한다.
    UPDATE emp01
    SET deptno = 40, hiredate=sysdate, job='개발자';
    SELECT * FROM emp01;

     

    테이블 Drop  후 Create 

    DROP TABLE emp01;
    CREATE TABLE emp01
    AS
    SELECT * FROM emp;

     

     

     

    문제 5

    10분 부서에 근무하고 있는 사원들을 40번 부서로 수정한다.
    UPDATE emp01
    SET deptno = 40
    WHERE deptno = 10;
    SELECT * FROM emp01;

     

     

    문제 6

    SALES MAN들의 입사일을 오늘, COMM을 2000으로 수정한다.
    UPDATE EMP01 
    SET hiredate = sysdate, COMM = 2000
    WHERE job = 'SALESMAN';
    SELECT * FROM emp01;

     

    문제 7

    전체 사원의 평균 급여보다 낮은 사원들의 급여를 50% 인상한다.
    UPDATE emp01
    SET sal = sal*1.5
    WHERE sal < (SELECT avg(sal) FROM emp01);
    SELECT * FROM emp01;

     

     

    문제 8

    MANAGER사원들의 직무를 Developor로 변경한다.
    UPDATE emp01
    SET job = 'Developer'
    WHERE job = 'MANAGER';

     

     

    문제 9

    30번 부서에 근무하고 있는 사원들의 급여를 전체 평균 급여로 설정한다.
    UPDATE emp01
    SET sal = (SELECT avg(sal) FROM emp01)
    WHERE deptno = 30;
    SELECT * FROM emp01;

     

     

    문제 10

    BLAKE밑에서 근무하고 있는 사원들의 부서를 DALLAS 지역의 부서번호로 변경한다.
    UPDATE emp01
    SET deptno = (SELECT deptno 
    			  FROM DEPT 
    			  WHERE loc = 'DALLAS')
    WHERE mgr = (SELECT empno 
    			 FROM emp01
    			 WHERE ename = 'BLAKE');

     

     

    문제 11

    20번 부서에 근무하고 있는 사원들의 직속상관을 KING으로 하고 급여를 전체그병의 최고액으로 설정한다.
    UPDATE emp01
    SET mgr = (SELECT empno
    		   FROM emp01
    		   WHERE ename = 'KING'), 
    	sal = (SELECT max(sal)
    		   FROM emp01)
    WHERE deptno = 20;

     

     

    테이블 Drop 후 Create

    DROP TABLE emp01;
    CREATE TABLE EMP01 
    AS
    SELECT * FROM emp;

     

     

    문제12

    직무가 CLERK인 사원들의 직무와 급여액을 20번 부서에근무하고 있는 사원 중 급여 최고액을 받는 사원의 직무와 급여액으로 변경한다.
    UPDATE EMP01 
    SET (job, sal) = (SELECT job, sal
                    FROM EMP01
                    WHERE sal = (SELECT max(sal)
                                 FROM emp01));
    반응형

    댓글

Designed by Tistory.