728x90
UPDATE
테이블에 기록된 기존의 데이터를 수정하는 구문
UPDATE 테이블명
SET 컬럼명 = 바꿀 값
, 컬럼명 = 바꿀 값
...
, 컬럼명 = 바꿀 값 -- 여러 개의 컬럼 동시 변경 가능(",")
WHERE 조건; -- WHERE 절은 생략 가능. 생략시 전체 모든 행의 데이터가 모두 변경됨
-- D9 부서명을 (총무팀 -> 기획팀)으로 수정
UPDATE DEPT_COPY
SET DEPE_TITLE = '기획팀'
-- > 조건식을 생략하여 전체 모든 행의 데이터가 모두 변경됨.
ROLLBACK;
UPDATE DEPT_COPY
SET DEPT_TITLE = '기획팀'
WHERE DEPT_ID = 'D9';
728x90
UPDATE에 서브쿼리 사용
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 = '박길동';
UPDATE 사용하여 수정시 UPDATE 제약조건에 위배되면 안 된다.
UPDATE EMPLOYEE
SET EMP_ID = 200
WHERE EMP_NAME = '송길동'; -- PRIMARY KEY 제약조건에 위배
-- 오류 ORA-00001: unique constraint (JN.EMPLOYEE_PK) violated
UPDATE EMPLOYEE
SET EMP_NAME = NULL
WHERE EMP_NAME = '송길동'; -- NOT NULL 제약조건에 위배
-- 오류 ORA-01407: cannot update("JN"."EMPLOYEE"."EMP_NAME") to NULL
728x90
'Programming > SQL' 카테고리의 다른 글
[Oracle] DDL(1) - ALTER(컬럼 추가/수정/삭제) (0) | 2024.06.08 |
---|---|
[Oracle] DML(3) - DELETE ( vs TRUNCATE 비교) (0) | 2024.03.08 |
[Oracle] DML(1) - INSERT / INSERT INTO SELECT / INSERT ALL (0) | 2024.03.08 |
[Oracle] SUBQUERY를 이용한 테이블 생성 / 테이블 생성 후 제약조건 추가하기 (ALTER TABLE) (2) | 2024.03.08 |
[Oracle] 제약조건(CONSTRAINT) - FOREIGN KEY(외래키) / ON DELETE SET NULL / ON DELETE CASCADE /ON DELETE RESTRICTED (1) | 2024.02.23 |