작성일자 : 2024-08-18
Ver 0.1.1
Ver 0.1.1
0. 배경
프로젝트를 하는 도중 테이블에 Excel 데이터를 넣고, 특정 컬럼의 데이터를 모두 대문자로 변경해야할 필요가 생겼었다.
이전 프로젝트에서는 나에게 권한은 SELECT 하는 권한 밖에 없었기에, 데이터의 값을 변경하는 쿼리를 작성할 일이 없었다.
하지만 이번 프로젝트에서는 나에게 수정할 수 있는 권한이 있었고, UPDATE SET 문을 이용해 데이터의 값을 변경할 수 있었다.
이번에 실제로 적용을 해본 만큼 이에 대해서 정리를 해보고자 한다.
1. 기본 사용법 및 주요 요소
UPDATE SET 문은 SQL에서 기존 테이블의 데이터를 수정하는 데 사용된다.
주로 테이블의 특정 열(컬럼)의 값을 변경할 때 사용되며, 조건을 통해 특정 행(레코드)만 업데이트할 수 있다.
UPDATE 테이블명
SET 컬럼명1 = 값1
,컬럼명2 = 값2
, ...
WHERE 조건;
- UPDATE 테이블명: 수정할 테이블을 지정한다.
- SET 컬럼명 = 값: 수정하려는 열과 그 열에 할당할 새로운 값을 지정합니다. 여러 열을 한 번에 수정할 수 있으며, 열과 값을 쉼표로 구분다.
- WHERE 조건: 특정 행만 업데이트하려면 조건을 지정합니다. 이 절이 없으면 테이블의 모든 행이 수정된다.
2. 예시
1. 특정 행의 단일 열 업데이트
UPDATE Employees
SET Salary = 5000
WHERE EmployeeID = 123;
- EmployeeID가 123인 행의 Salary 값을 5000으로 업데이트
UPDATE Employees
SET dept = UPPER(dept);
- dept 컬럼의 데이터를 대문자로 업데이트
2. 다중 열 업데이트
UPDATE Employees
SET Salary = 5500
,JobTitle = 'Senior Developer'
WHERE EmployeeID = 123;
- EmployeeID가 123인 행의 Salary를 5500으로, JobTitle을 'Senior Developer'로 변경
3. 모든 행의 열 업데이트
UPDATE Employees
SET Department = 'Marketing';
- Employees 테이블의 모든 행에 대해 Department 열을 'Marketing'으로 업데이트
3. 특징 및 주의사항
트랜잭션 관리
- UPDATE 문은 트랜잭션의 일부로 실행된다. 트랜잭션이 완료되기 전에 ROLLBACK을 사용하여 변경 사항을 되돌릴 수 있으며, COMMIT을 사용하면 변경 사항이 영구적으로 적용된다.
WHERE 절의 중요성
- WHERE 절을 생략하면 테이블의 모든 행이 업데이트된다. 실수로 WHERE 절을 생략할 경우 의도하지 않은 대량 업데이트가 발생할 수 있으므로 주의해야 한다.
JOIN을 통한 다중 테이블 업데이트
- UPDATE 문에서 JOIN을 사용하여 다른 테이블의 값을 참조하여 업데이트를 수행할 수 있다.
UPDATE Employees e
SET e.Salary = d.AverageSalary
FROM Departments d
WHERE e.DepartmentID = d.DepartmentID;
- Departments 테이블의 데이터를 참조하여 Employees 테이블을 업데이트한다.
서브쿼리를 통한 값 설정
- 서브쿼리를 사용하여 값을 설정할 수 있다.
UPDATE Employees
SET Salary = (SELECT AVG(Salary)
FROM Employees
WHERE DepartmentID = 2)
WHERE DepartmentID = 1;
- DepartmentID가 1인 직원들의 Salary를, DepartmentID가 2인 직원들의 평균 급여로 업데이트한다.
실행 성능
- UPDATE 문은 테이블의 모든 행을 검사하므로, 대량의 데이터가 있을 때 성능에 영향을 미칠 수 있습니다. 인덱스를 적절히 사용하고, WHERE 절을 통해 수정할 데이터를 최소화하여 성능을 향상시킬 수 있다.
CASCADE와 관계형 데이터베이스
- 외래 키(Foreign Key)가 설정된 테이블에서 CASCADE 옵션을 사용하면, 참조된 데이터가 업데이트될 때 종속된 데이터도 자동으로 업데이트된다.
UPDATE SET 문은 데이터베이스의 데이터를 수정하는 강력한 도구로,
이를 적절하게 사용하면 데이터의 일관성을 유지하면서 필요한 데이터를 신속하게 변경할 수 있다.