고래씌
[Oracle] 7-2. DML(INSERT, UPDATE, DELETE) - UPDATE 본문
1. UPDATE
: 테이블에 기록된 기존의 데이터를 수정하는 구문
[표현법]
UPDATE 테이블명 SET 컬럼명 = 바꿀값, 컬럼명 = 바꿀값, 컬럼명 = 바꿀값, ... WHERE 조건; |
☞ 여러개의 컬럼값을 동시에 변경 가능, 이때 바꿀칼럼을 ,로 나열해야함
☞ WHERE 절은 생략 가능. 생략시에는 테이블의 모든 행의 데이터가 변경되어버림
▶ 예제1) D9부서의 부서명을 전략기획팀으로 수정
① 복사본 테이블을 만든 후 작업
② DEPT_COPY 테이블에서 D9부서의 부서명을 전략기획팀으로 수정(조건 추가 X)
=> 이때 주의할 것 !!!!!!!!!!!!!!!!!! 조건을 추가하지 않는 경우 모든 행의 값이 전략기획팀으로 수정되는 문제가 발생한다!!!!
③ 변경사항에 대해서 되돌리는 명령어
이러한 사항에 대비하기 위해서 변경사항에 대해 되돌리는 명령어가 있다.
ROLLBACK; |
=> 이 명령어를 쓰면 UPDATE를 사용하기 전으로 돌아간다.
④ DEPT_COPY 테이블에서 D9부서의 부서명을 전략기획팀으로 수정(조건 추가 O)
=> WHERE절의 조건에 따라 1개 ~ N개의 행이 변경이 될 수 있다.
▶ 예제 2) 전체 사원의 급여를 20%인상, 전 사원의 보너스를 10%인상하도록 변경
① 복사본 테이블
② 급여 20% 인상, 보너스 10% 인상
2. UPDATE시 서브쿼리 사용
: 서브쿼리를 수행한 결과값으로 기존에 있던 값을 변경하겠다
- CREATE 시에 서브쿼리 : 서브쿼리를 수행한 결과를 테이블 만들때 넣어버리겠다.
- INSERT 시에 서브쿼리 : 서브쿼리를 수행한 결과를 해당 테이블에 삽입하겠다.
[표현법]
UPDATE 테이블명 SET 컬럼명 = (서브쿼리) WHERE 조건; |
▶ EMP_SALARY 테이블에 박말똥 사원의 부서코드를 선동일 사원의 부서코드로 변경하기
① 선동일 사원의 부서코드 추출
② 박말똥 부서코드를 D9으로 변경
=> 'D9'으로 변경됨
▶ 방명수 사원의 급여와 보너스를 유재식 사원의 급여와 보너스값으로 변경하시오.
※ 주의사항 : UPDATE 할때도 변경할 값에 대해서 제약조건에 위배되면 안됨
=> 오류 발생. 이미 키값이 200이 있기 떄문에 제약조건을 위배한다.
▶ 모든 변경사항을 확정하는 명령어
COMMIT; |
=> 모두 저장됨
'Database > Oracle' 카테고리의 다른 글
[Oracle] DML 실습문제 (CREATE, INSERT, UPDATE, DELETE) (0) | 2023.11.29 |
---|---|
[Oracle] 7-3. DML(INSERT, UPDATE, DELETE) - DELETE, TRUNCATE (2) | 2023.11.29 |
[Oracle] 7-1. DML(INSERT, UPDATE, DELETE) - INSERT (3) | 2023.11.29 |
[Oracle] 6-4. DDL(CREATE) - DDL계정 ④ (테이블 복사) (1) | 2023.11.29 |
[Oracle] 6-3. DDL(CREATE) - DDL 계정 ③ (DEFAULT) (0) | 2023.11.29 |