hyeonga_code
Database_46_데이터 조작과 트랜잭션_DML 데이터 조작어 UPDATE 본문
-- DML_Data Management Language 데이터 조작어
-- UPDATE
/*
UPDATE table
SET column=value, ...
[WHERE condition];
*/
-- 이미 저장되어 있는 테이블의 데이터를 수정합니다.
-- 필요한 경우 한 번에 여러 열 또는 여러 행을 갱신합니다.
-- 주의사항
-- WHERE 절을 생략하는 경우 테이블의 모든 행이 수정됩니다.
-- WHERE 절의 조건에 해당하는 행이 없는 경우 오류는 발생하지 않고 아무 행도 변경되지 않습니다.
-- 수정할 데이터가 존재하는 지 확인합니다.
SELECT employee_id, last_name, hire_date FROM employees
WHERE employee_id=113;
/*
EM_ID LAST_NAME SALARY DP_ID
----------------------------------------------------------
113 김 6900 100
*/
UPDATE employees SET department_id=70, salary=salary*1.1
WHERE employee_id=113;
/*
1 행 이(가) 업데이트되었습니다.
*/
SELECT * FROM employees
WHERE employee_id=113;
/*
EM_ID LAST_NAME SALARY DP_ID
----------------------------------------------------------
113 김 7590 70
-- 다른 창에서 조회하는 경우 변경된 데이터를 확인할 수 없습니다.
*/
-- 다른 창에서 실행합니다.
INSERT INTO sales_reps(id, name, salary, comm, job_id, department_id)
SELECT employee_id, last_name, salary, commission_pct, job_id, department_id
FROM employees
WHERE job_id LIKE '%REP%';
/*
4개 행 이(가) 삽입되었습니다.
*/
UPDATE sales_reps
SET salary = 8000;
/*
4개 행 이(가) 업데이트되었습니다.
*/
SELECT * FROM sales_reps;
/*
ID NAME SALARY COMM JOB_ID DP_ID
---------------------------------------------------------------------------------
174 Abel 8000 0.3 SA_REP 80
176 Taylor 8000 0.2 SA_REP 80
178 Grant 8000 0.15 SA_REP ( null )
202 Fay 8000 ( null ) MK_REP 20
*/
ROLLBACK;
-- 서브쿼리로 업데이트할 수 있습니다.
UPDATE employees
SET job_id = ( SELECT job_id
FROM employees
WHERE employee_id=205),
salary = ( SELECT salary
FROM employees
WHERE employee_id=205)
WHERE employee_id=114;
/*
1 행 이(가) 업데이트되었습니다.
*/
-- 행의 갱신 : 무결성 제약 조건의 오류
-- 무결성 제약 조건의 영향을 받는 레코드를 갱신하면 오류가 반환됩니다.
-- 무결성 제약 조건은 데이터가 미리 정의된 규칙을 따르도록 보장합니다.
UPDATE employees
SET department_id = 55
WHERE department_id = 110;
/*
<오류>----------------------------------------------------------------------------------
명령의 256 행에서 시작하는 중 오류 발생 -
UPDATE employees
SET department_id = 55
WHERE department_id = 110
오류 보고 -
ORA-02291: integrity constraint (HR.EMP_DEPT_FK) violated - parent key not found
------------------------------------------------------------------------------------------
*/
'Oracle Database' 카테고리의 다른 글
Database_48_데이터 조작과 트랜잭션_DCL 제어어 (0) | 2023.08.05 |
---|---|
Database_47_데이터 조작과 트랜잭션_DML 데이터 조작어 DELETE (0) | 2023.08.04 |
Database_45_데이터 조작과 트랜잭션_DML 데이터 조작어 (0) | 2023.08.03 |
Database_44_데이터 조작과 트랜잭션_작업 단위 (0) | 2023.08.03 |
Database_43_SUB QUERY_서브쿼리에서의 널(NULL) 값 (0) | 2023.08.02 |