본문 바로가기
Database/Oracle

[Oracle SQL] DML - UPDATE문, DELETE문

by Amy IT 2022. 5. 14.

이전 글에 이어서 DML에 대해 정리해 보겠습니다. UPDATE문과 DELETE문도 마찬가지로 DML이기 때문에 트랜잭션이 발생되며 반드시 COMMIT 혹은 ROLLBACK을 입력해 트랜잭션을 종료시켜야 합니다. 

 

 

UPDATE 문

 

데이터를 수정하기 위해 사용합니다. 

UPDATE 테이블명
SET 컬럼명=변경할값[, 컬럼명2=변경할값2]
[WHERE 조건식];

 

이전 글에서 만들었던 mydept 테이블에서 40번 부서의 부서명과 지역을 변경해 보겠습니다. 다음과 같이 WHERE절로 변경하고 싶은 레코드를 지정해 주어야 합니다. SELECT문을 사용해 변경된 테이블을 확인할 수 있습니다.

UPDATE mydept
SET dname='개발', loc='서울'
WHERE deptno=40;

 

서브쿼리를 사용해 서브쿼리가 실행된 결과값으로 테이블을 수정할 수도 있습니다. mydept 테이블에서 40번 부서의 부서명을 dept 테이블에서 부서번호가 40인 부서명으로 수정하고, 지역은 dept 테이블에서 부서번호가 10인 지역으로 수정해 보겠습니다. 다음과 같이 두 개의 서브쿼리가 실행되어야 합니다.

UPDATE mydept
SET dname= (SELECT dname 
          FROM dept
          WHERE deptno=40),
    loc= (SELECT loc
          FROM dept
          WHERE deptno=10)
WHERE deptno=40;

 

 

 

DELETE 문

 

데이터를 삭제하기 위해 사용합니다. 

DELETE FROM 테이블명
[WHERE 조건식];

조건식을 사용해 삭제하고 싶은 행을 지정해 줍니다. WHERE절을 생략하면 모든 행이 삭제되기 때문에 주의해야 합니다.

 

mydept 테이블에서 부서번호가 10인 행을 삭제하는 SQL문입니다.

DELETE FROM mydept 
WHERE deptno=10;

 

마찬가지로 서브쿼리를 사용해 서브쿼리가 실행된 결과값으로 데이터를 삭제할 수도 있습니다. dept 테이블에서 부서번호가 10인 부서의 지역과 동일한 지역인 데이터를 mydept 테이블에서 삭제하는 SQL문입니다.

DELETE FROM mydept 
WHERE loc= (SELECT loc
            FROM dept
            WHERE deptno=10);

dept 테이블에서 10번 부서의 지역인 NEW YORK과 동일하게 지역이 NEW YORK이었던 40번 부서가 삭제된 것을 확인할 수 있습니다.

 

 

DML에 대해 정리해 보았습니다. 다음 글에서는 DDL에 대해 알아보도록 하겠습니다.

 

 

댓글