-
Oracle - DML(Data ManipulationLanguage) UPDATE - Part 2데이터베이스/Oracle 2020. 11. 20. 16:14728x90반응형
UPDATE
UPDATE란 테이블에 기록된 컬럼의 값을 수정하는 구문으로 테이블의 전체 행 개수에는 변화가 없다.
[ UPDATE 예시 ]
CREATE TABLE DEPT_COPY -- DEPT_COPY 테이블을 생성 AS SELECT * FROM DEPARTMENT; UPDATE DEPT_COPY SET DEPT_TITLE = ‘전략기획팀’ WHERE DEPT_ID = ‘D9’; -- DEPT_COPY 테이블의 데이터를 업데이트
DEPT_ID가 D9인 사원을 DEPT_TITLE을 전략기획팀으로 변경
이렇게 총무부에서 전략기획팀으로 업데이트 됬다.
* WHERE 조건을 설정하지 않으면 모든 행의 컬럼 값이 변경된다.
- 방명수 사원의 급여와 보너스율을 유재식 사원과 동일하게 변경
EMP_SALARY 테이블을 하나 만든다.
CREATE TABLE EMP_SALARY AS SELECT EMP_ID, EMP_NAME, DEPT_CODE, SALARY, BONUS FROM EMPLOYEE;
UPDATE를 통해 급여와 보너스율을 동일하게 변경한다.
UPDATE EMP_SALARY SET SALARY = ( SELECT SALARY FROM EMP_SALARY WHERE EMP_NAME=‘유재식’), BONUS = ( SELECT BONUS FROM EMP_SALARY WHERE EMP_NAME=‘유재식’) WHERE EMP_NAME = ‘방명수’;
* UPDATE 시에도 서브쿼리 이용이 가능하다.
UPDATE문을 실행하고 결과값을 조회해보자.
SELECT * FROM EMP_SALARY WHERE EMP_NAME IN (‘유재식’, ‘방명수‘)
왼쪽은 변경전
오른쪽은 변경후
- 각각의 쿼리문 작성한 것을 다중 행 다중 열 서브쿼리로 변경이 가능하다.
UPDATE EMP_SALARY SET (SALARY, BONUS) = ( SELECT SALARY, BONUS FROM EMP_SALARY WHERE EMP_NAME = ‘유재식’) WHERE EMP_NAME IN (‘노옹철’, ‘전형돈’, ‘정중하’, ‘하동운');
결과값을 조회해보자.
SELECT * FROM EMP_SALARY WHERE EMP_NAME IN (‘유재식’, ‘노옹철’, ‘전형돈’, ‘정중하’, ‘하동운');
- EMP_SALARY테이블에서 아시아 지역에 근무하는 직원의 보너스 포인트를 0.3으로 변경
UPDATE EMP_SALARY SET BONUS = 0.3 WHERE EMP_ID IN (SELECT EMP_ID FROM EMPLOYEE JOIN DEPARTMENT ON(DEPT_ID = DEPT_CODE) JOIN LOCATION ON(LOCATION_ID = LOCAL_CODE) WHERE LOCAL_NAME LIKE ‘ASIA%’);
728x90반응형'데이터베이스 > Oracle' 카테고리의 다른 글
Oracle - DDL (Data Definition Language) ALTER, DROP - Part 3 (0) 2020.11.22 Oracle - DML(Data ManipulationLanguage) DELETE - Part 3 (0) 2020.11.20 Oracle - DML(Data ManipulationLanguage) INSERT - Part 1 (0) 2020.11.20 Oracle - DDL (Data Definition Language) 제약 조건 - Part 2 (0) 2020.11.20 Oracle - DDL (Data Definition Language) CREATE - Part 1 (0) 2020.11.17