DB(SQL)
ORACLE / UPDATE
이나피스
2022. 3. 27. 19:59
반응형
UPDATE
테이블에 기록된 기존의 데이터를 수정하는 구문
SET절에 ,로 나열하여 여러개 컬럼값을 동시에 변경 가능
WHERE절은 생략 가능하지만 생략시 모든 행의 데이터가 변경되니 주의
UPDATE 테이블명
SET 컬럼명=변경값,컬럼명=변경값,...
WHERE 조건;
--DEPT_COPY 테이블에서 D9부서의 부서명을 전략기획팀으로 변경하기
UPDATE DEPT_COPY
SET DEPT_TITLE='전략기획팀'; --WHERE절 생략으로 모든 부서명이 전략기획팀으로 변경됨
UPDATE DEPT_COPY
SET DEPT_TITLE='전략기획팀'
WHERE DEPT_ID='D9'; --DEPT_ID가 D9인 부서 이름만 전략기회팀으로 변경됨
--EMP_SALARY테이블에서 노옹철 사원 급여 1,000만원으로 변경
UPDATE EMP_SALARY
SET SALARY=10000000
WHERE EMP_NAME='노옹철';
--EMP_SALARY테이블에서 선동일 사원 급여 700만원 보너스 0.2로 변경
UPDATE EMP_SALARY
SET SALARY=7000000, BONUS=0.2
WHERE EMP_NAME='선동일';
--전체사원의 급여를 기존 급여에서 20프로 인상한 금액으로 변경
UPDATE EMP_SALARY
SET SALARY=SALARY+(SALARY*0.2);
UPDATE에서 서브쿼리 활용
서브쿼리를 수행한 결과값으로 기존의 값을 변경
변경값이 제약조건에 맞지 않는 경우 오류 발생
CF. CREATE시 서브쿼리 사용 : 서브쿼리를 수행한 결과를 테이블에 넣어 생성
INSERT시 서브쿼리 사용 : 서브쿼리를 수행한 결과를 해당 테이블에 삽입
UPDATE 테이블명
SET 컬럼명 = (서브쿼리)
WHERE 조건명; (생략가능)
--EMP_SALARY 테이블의 방명수 사원 부서코드를 선동일 사원 부서코드로 변경(방명수 D1 선동일 D9)
UPDATE EMP_SALARY
SET DEPT_CODE = (SELECT DEPT_CODE
FROM EMPLOYEE
WHERE EMP_NAME='선동일')
WHERE EMP_NAME='방명수';
--방명수 사원의 급여와 보너스를 유재식 사원의 급여와 보너스값으로 변경
UPDATE EMP_SALARY
SET (SALARY, BONUS) = (SELECT SALARY, BONUS
FROM EMP_SALARY
WHERE EMP_NAME='유재식')
WHERE EMP_NAME='방명수';
반응형