테이블에서 데이터를 수정하는 UPDATE
회원 정보 변경, 결제 계좌 변경, 내가 쓴 글 수정 등 기능을 수행하려면 데이터베이스 테이블에 저장된 데이터를 변경해야하는데, 이렇게 특정 테이블에 저장한 데이터 내용을 수정할 때 UPDATE문을 사용.
UPDATE문의 기본 사용법
UPDATE문은 UPDATE 키워드 이후에 변경할 테이블 이름을 지정하고 SET절에 ‘변경할 열 이름 = 변경할 데이터’를 지정하며, 여러 열의 데이터를 수정할 때는 쉼표(,)로 구분함. 데이터를 변경해야 할 행이 정해져 있다면 SELECT문에서 사용한것과 같이 WHERE절과 조건식을 추가하여 변경 대상 행을 지정할 수 있음.
-- 기본 형식
UPDATE [변경할 테이블]
SET [변경할 열1]=[데이터], [변경할 열2]=[데이터],...[변경할 열n]=[데이터]
[WHERE 데이터를 변경할 대상 행을 선별하는 조건];
| 키워드 | 필수 요소 | 선택 요소 | 설명 |
| UPDATE | 테이블 이름 | 데이터를 수정할 테이블을 지정 | |
| SET | 변경할 열의 이름과 데이터 | 열을 선택하고 변경할 데이터를 입력 | |
| WHERE | 변경 데이터를 선별하는 조건식 | 변경할 데이터를 선별하는 조건식을 지정. 생략 하면 테이블 내 지정한 모든 열의 데이터를 변경. |
데이터 전체 수정하기
- DEPT_TEMP2 테이블 업데이트 하기
UPDATE DEPT_TEMP2
SET LOC = 'SEOUL';
SELECT * FROM DEPT_TEMP2;
-- 이렇게 WHERE절(특정 열) 없이 하면 LOC열이 모두 SEOUL로 변경됨
** 전체를 바꾸는 경우는 거의 없고 대부분 테이블에 저장한 몇몇 행만 선정하여 데이터를 수정함.
수정한 내용을 되돌리고 싶을 때
실수로 UPDATE문을 실행했을 때 이를 취소하려면 ROLLBACK 명령어를 사용.
ROLLBACK;하면 이전 상태로 되돌아감.
ROLLBACK;
데이터 일부만 수정하기
UPDATE문에서 수정할 대상 행을 선별하려면 WHERE절과 조건식을 사용.
사용 방법은 SELECT문에서 사용한 WHERE절과 같음.
-- 테이블 데이터 일부만 수정하기
UPDATE DEPT_TEMP2
SET DNAME = 'DATABASE',
LOC = 'SEOUL'
WHERE DEPTNO = 40;
SELECT * FROM DEPT_TEMP2;
서브쿼리를 사용하여 데이터 수정하기
- 여러 열을 한 번에 수정하기
INSERT문과 마찬가지로 UPDATE문에서도 서브쿼리를 활용할 수 있음.
-- 서브쿼리로 데이터 한 번에 수정하기
UPDATE DEPT_TEMP2
SET (DNAME, LOC) = (SELECT DNAME, LOC
FROM DEPT
WHERE DEPTNO = 40)
WHERE DEPTNO = 40;
SELECT * FROM DEPT_TEMP2;
- 열 하나하나 수정하기
열 하나하나에 서브쿼리를 적용할 수도 있는데, 주의할 점은 수정할 열의 개수에 따라 서브쿼리에 지정한 열 개수도 변한다는 것. 당연히 서브쿼리에 나열한 열과 UPDATE문으로 변경할 열 개수나 자료형은 일치해야함.
-- 서브쿼리로 데이터 일부 수정하기
UPDATE DEPT_TEMP2
SET DNAME = (SELECT DNAME
FROM DEPT
WHERE DEPTNO = 40),
LOC = (SELECT LOC
FROM DEPT
WHERE DEPTNO = 40)
WHERE DEPTNO = 40;
WHERE절에 서브쿼리 사용하여 데이터 수정하기
-- UPDATE문의 WHERE절에 서브쿼리 사용하기
UPDATE DEPT_TEMP2
SET LOC = 'SEOUL'
WHERE DEPTNO = (SELECT DEPTNO
FROM DEPT_TEMP2
WHERE DNAME = 'OPERATIONS');
SELECT * FROM DEPT_TEMP2;
** UPDATE문을 사용할 때 주의점
테이블에 있는 데이터를 수정하거나 삭제하는 기능을 수행하므로 위험성이 큰 명령어임.
실무에서도 UPDATE의 WHERE 조건식이 정확한 데이터를 대상으로 하는지 꼼꼼히 따져 보지 않고 수행한 후 애를 먹는 상황이 종종 말생하기 때문에 실행하기 전에 WHERE절을 검증하는 과정을 반드시 거쳐야함. 변경해야 하는 행만 정확하게 선정해서 수정하는지 확인하기.
UPDATE문을 완성
UPDATE DEPT_TEMP2
SET DNAME = 'DATABASE',
LOC = 'SEOUL'
WHERE DEPTNO = 40;
위의 UPDATE문을 실행하기 전WHERE절의 조건식이 수정할 데이터를 정확히 가리키는지 알고 싶다면 SELECT문에 같은 WHERE문을 적용하여 결괏값을 확인하면 됨.
SELECT *
FROM DEPT_TEMP2
WHERE DEPTNO = 40;'SQL' 카테고리의 다른 글
| [SQL] 트랜잭션 제어와 세션 (0) | 2025.12.03 |
|---|---|
| [SQL] 데이터를 추가, 수정, 삭제하는 데이터 조작어_3 (0) | 2025.12.01 |
| [SQL] 데이터를 추가, 수정, 삭제하는 데이터 조작어_1 (0) | 2025.12.01 |
| [SQL] SQL 속 또 다른 SQL, 서브쿼리_3 (0) | 2025.12.01 |
| [SQL] SQL 속 또 다른 SQL, 서브쿼리_2 (0) | 2025.12.01 |