-
Oracle - Update 정복하기DataBase/Oracle 2024. 9. 2. 23:38반응형
Update
오라클 데이터베이스에서 UPDATE 문은 기존 테이블의 데이터를 수정하는 데 사용됩니다. 이 명령문은 특정 조건에 맞는 하나 이상의 레코드의 값을 변경할 수 있습니다. 기본적인 UPDATE 문의 형식은 다음과 같습니다:
UPDATE 테이블명 SET 컬럼명1 = 값1, 컬럼명2 = 값2, ... WHERE 조건;
주요 구성 요소:
- 테이블명: 데이터를 수정할 테이블의 이름을 지정합니다.
- SET 절: 수정할 열과 해당 열에 설정할 값을 지정합니다. 여러 개의 열을 수정하려면 쉼표로 구분하여 나열합니다.
- 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));
반응형'DataBase > Oracle' 카테고리의 다른 글
Oracle - 테이블 생성 , 데이터타입 (0) 2024.09.03 Oracle - delete 정복하기 (0) 2024.09.03 Oracle - Insert 실습 한방정리 (0) 2024.08.27 Oracle - Insert 개념정리 (0) 2024.08.27 Oracle - SET(UNION, UNION ALL, INTERSECT, MINUS) (0) 2024.08.21