728x90
[Oracle] DML(1) - INSERT / INSERT INTO SELECT / INSERT ALL
DML : DATA MANIPULATION LANGUAGE 데이터 조작 언어 테이블에 새로운 데이터를 삽입(INSERT) 하거나, 기존의 데이터를 수정(UPDATE) 하거나, 삭제(DELETE) 하는 구문 INSERT 테이블에 행을 추가하는 구문 1. INSERT IN
jaynarecord.tistory.com
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 |