UPDATE 명령문은 오라클에서 데이터를 수정할 때 사용되는 기본 문법입니다.
해당 명령문의 사용방법을 익히기 위해서 샘플로 활용할 데이터베이스는 오라클 설치 시 기본으로 제공되는
scott 계정에 있는 테이블을 기반으로 해서 작성하도록 하겠습니다.
1. UPDATE 명령어
UPDATE문은 오라클에서 데이터를 수정할 때 사용하는 명령어입니다. 해당 명령어의 경우 기존에 있는 데이터를 수정하기 위해서 사용되기 때문에 데이터를 추가하거나 삭제할 수 없습니다.
(1) 문법
UPDATE 테이블명
SET 컬럼명 = 값
WHERE 조건;
UPDATE문의 기본 문법입니다.
UPDATE문 바로 옆에는 수정의 대상이 되는 테이블명을 작성합니다.
SET은 실제로 수정이 이루어지는 부분입니다. 왼쪽에는 수정의 대상이 되는 컬럼명이 있고, 오른쪽에는 수정내용을 작성하게 됩니다.
WHERE은 조건을 작성하는 부분입니다. 조건은 다양하게 설정할 수 있지만 일반적으로는 컬럼 = 값과 같이 특정 컬럼에 해당하는 값을 작성합니다.
2. 데이터 수정하기
실제 예제를 진행해보면서 UPDATE문의 사용방법에 대해서 알아보도록 하겠습니다.
(2-1) 데이터 수정하기
UPDATE EMP
SET MGR = 7995
WHERE EMPNO = 7839;
해당 SQL문을 바탕으로 SQL문이 의미하는 바를 살펴보겠습니다.
UPDATE EMP : EMP테이블을 수정하겠습니다.
SET MGR = 7995 : EMP 테이블에 있는 MGR컬럼의 값을 7995로 수정하겠습니다.
WHERE EMPNO = 7839 : 수정 대상이 되는 데이터는 EMPNO의 값이 7839에 해당하는 데이터로 한정하겠습니다.
이와 같이 데이터를 추가했을 때의 실행결과를 살펴보겠습니다.
(2-2) 데이터 수정하기 실행결과
위의 SQL문을 작성하고 실행하면 위와 같이 1행이 업데이트되었다는 메시지가 나타납니다.
이와 같은 메시지가 나타났다면 수정하고자 하는 데이터가 EMP 테이블에 이상 없이 수정되었음을 의미합니다.
이제 실제로 데이터가 잘 수정되었는지 SELECT문을 이용해서 확인해보겠습니다.
SELECT *
FROM EMP
WHERE EMPNO = 7839;
UPDATE문에서 업데이트 조건을 한정한 내용을 보면 EMPNO의 값이 7839였습니다.
따라서 이번에 수정한 내용을 확인하기 위해서는 SELECT문에 EMPNO값을 7839로 조건을 추가하면 수정된 데이터를 확인할 수 있는데요. 위의 SQL문을 실행해보면 다음과 같은 결과값이 조회됩니다.
조회조건을 보면 수정을 한 MGR값이 7995로 변경된것을 확인할 수 있습니다.
3. 다중 데이터 수정, 다중 조건
UPDATE문의 형태를 다시한번 생각해보면 SET부분에는 수정하고자 하는 내용이 들어가고, WHERE 부분에서는 수정하고자 하는 대상을 설정해주고 있습니다.
이번에는 여러 데이터를 동시에 수정해보고, 조건도 다양하게 적용해보도록 하겠습니다.
즉, 이전에는 1개의 데이터를 수정했다면 지금은 여러건의 데이터를 수정해보도록 하겠습니다.
(3-1) 다중 데이터
이번 수정하고자 하는 데이터의 요구사항은 아래와 같습닏다.
"JOB의 값이 CLERK이고, DEPTNO값이 20인 사람들은 SAL의 값을 4000, COMM의 값은 10으로 변경해주세요."
해당 요구사항을 SQL로 구현한 내용은 다음과 같습니다.
UPDATE EMP
SET SAL = 4000,
COMM = 10
WHERE JOB = 'CLERK'
AND DEPTNO = 20;
해당 SQL문을 살펴보도록 하겠습니다.
- UPDATE EMP : 수정하고자 하는 테이블은 EMP입니다.
- SET SAL = 4000, COMM = 10 : 수정하고자 하는 컬럼은 SAL과 COMM이 있고, 변경하고자 하는 값은 각각 4000과 10입니다. 한가지 기억해야 할 점은 수정 대상이 되는 컬럼이 여러개일 경우 세미콜론(',')을 통해 값을 구분하고 있는것을 확인할 수 있는데요. 이처럼 여러개의 값을 변경할때는 세미콜론(',')을 통해 값과 값 사이를 구분지어줘야 합니다.
- WHERE JOB = 'CLERK', AND DEPTNO = 20 : 변경하고자 하는 데이터는 JOB의 값이 'CLERK'이면서 DEPTNO의 값이 20일 경우로 한정한다는 의미입니다.
이때, 앞에서 말했듯이 SET의 경우 수정하고자 하는 값이 여러개일 경우 값을 구분짓는 부분은 세미콜론(',')으로 표시했지만 조건에 해당하는 WHERE의 경우에는 AND로 표시하고 있습니다.
(조건부분에는 AND, OR, NOT IN, LIKE 등 여러가지 조건식이 활용되고 있습니다. 해당 부분은 추후 작성하도록 하겠습니다.)
해당 내용을 어느정도 이해했다면 위의 SQL문을 실행해보겠습니다.
(3-2) 다중 데이터 실행결과
해당 SQL문을 실행하면 1개 이상의 데이터가 수정되었음을 확인할 수 있습니다. (수정된 데이터의 건수는 차이가 있을 수 있습니다.) 이제 수정된 내용이 제대로 적용되었는지 확인해볼까요?
해당 데이터를 확인하려면 UPDATE문에서 작성된 WHERE 조건을 그대로 사용하면 됩니다. 아래의 SQL문을 확인해주세요.
SELECT *
FROM EMP
WHERE JOB = 'CLERK'
AND DEPTNO = 20;
실행결과를 살펴보겠습니다.
WHERE 조건에 해당하는 JOB의 값이 CLERK이면서 DEPTNO의 값이 20에 해당하는 데이터 중에서 우리가 이번에 수정을 했던 SAL값과 COMM값이 각각 4000과 10으로 수정되었음을 확인할 수 있습니다.이와같이 UPDATE문의 경우 특정 데이터를 조건에 따라 손쉽게 수정할 수 있는 장점이 있습니다.
이 밖에도 SELECT한 내용을 UPDATE 할 수 있는 방법도 있고 SET부분에 해당하는 값을 특정값이 아닌 SELECT한 결과에 해당하는 값으로 세팅하는 등의 다양한 UPDATE방법이 있지만, 이번에는 그런 부분은 제외하고 가장 기초적인 내용만을 다루었으니 다음 포스팅을 기대해주시면 감사하겠습니다.
4. UPDATE문 작성 시 참고사항
UPDATE문의 경우 INSERT문과 마찬가지로 평소에는 직접적인 명령어를 입력하는 경우가 많지 않습니다. 다만, INSERT문과 달리 UPDATE문은 몇몇 컬럼의 값을 변경하는 등의 역할을 하기 때문에 INSERT문에 비해서 사용빈도는 높은편입니다. 따라서 다음의 참고사항을 숙지하고 계시면 업무에 많은 도움이 되리라 생각됩니다.
(4-1) 오타를 만드세요.
해당 내용은 INSERT문에서도 언급한것과 동일한 내용입니다. 특히 UPDATE문의 경우 사람이 일일이 수정하기에는 수정해야 하는 내용이 너무 방대할 경우에 UPDATE문을 사용하는 경우가 그렇지 않은 경우보다 많기 때문에 자칫 UPDATE문을 잘못 작성하여 실행하면 수정되는 데이터의 양도 그리고 잘못된 데이터를 복구해야 하는 데이터의 양도 그만큼 많아지게 됩니다. 따라서 UPDATE문을 작성하는 중에는 일부러 오타를 내서 자칫 의도하지 않은 실행을 막을 수 있는 조치를 하는것을 권해드립니다.
(4-2) SELECT문을 활용
UPDATE 문을 보면 WHERE 부분이 있습니다. WHERE 부분은 UPDATE되는 대상의 범위를 지정하게 됩니다. 이는 곧 SELECT문에서 WHERE과 UPDATE문에서의 WHERE은 각각 조회 및 수정되는 건수는 동일한 결과값을 도출할 수 있게 됩니다. 따라서 UPDATE문을 작성하기 전에 SELECT문과 WHERE의 활용을 통해 내가 수정해야 하는 데이터가 어느정도인지 가늠해보고 UPDATE문을 작성하는것이 보다 안정적으로 UPDATE문을 활용할 수 있는 방법이란 생각이 듭니다. 예를 들어 SELECT문을 했을때 조회되는 데이터 건수가 4건이라면, 이때 조회되는 4건을 기억해두었다가 UPDATE문을 작성하여 실행하는 경우를 생각해볼 수 있습니다. 이때 실행된 UPDATE의 건수가 4건이라면 정상적으로 수정이 이루어졌다고 볼 수 있겠죠?
(4-3) 첫번째 UPDATE는 최소한의 범위로
위와같은 방식으로 최대한 조심하면서 UPDATE문을 작성했다면 단 1건의 데이터가 나오는 조건을 추가로 설정하여 실행할것을 권해드립니다. (EMP테이블의 경우 기본키인 EMPNO가 해당되며 기본키의 설명은 추후 테이블 생성 포스팅에서 다루겠습니다.) 1건의 데이터만 우선하여 UPDATE하는 경우는 마지막으로 내가 작성한 UPDATE문이 이상이 없는지 확인하는 용도로 이용하시면 됩니다.
작성한 UPDATE문에 전혀 실수가 없다고 생각할지라도 UPDATE문을 실행하게 되면 나중에 이를 되돌리려면 그만큼의 시간이 소요되므로, 가급적 1건의 데이터만 테스트로 UPDATE를 하시고 이상이 없다고 생각될때 원래 작성한 UPDATE문을 실행하실것을 권해드립니다.
'DB > Oracle' 카테고리의 다른 글
[ORACLE] [오라클 문법] 06. CREATE TABLE(테이블 생성) 사용방법 & 예제 (0) | 2022.04.07 |
---|---|
[ORACLE] [오라클 문법] 05. DELETE문(삭제) 사용방법 & 예제 (0) | 2022.03.29 |
[ORACLE] [오라클 문법] 03. INSERT문(추가) 사용방법 & 예제 (0) | 2022.03.26 |
[ORACLE] [오라클 문법] 02. SELECT문(조회) 사용방법 & 예제 (0) | 2022.03.25 |
[ORACLE] [오라클 문법] 01. DESC문 사용방법 & 예제 (0) | 2022.03.24 |