`UPDATE ... SET` 구문은 SQL에서 기존 테이블의 데이터를 수정할 때 사용됩니다. 이 구문을 통해 하나 이상의 열의 값을 변경할 수 있으며, 특정 조건을 만족하는 행들에 대해서만 업데이트를 적용할 수도 있습니다.
### 기본 구문
```sql
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
```
- **`table_name`**: 값을 수정할 테이블의 이름입니다.
- **`SET column1 = value1, column2 = value2, ...`**: 수정할 열(column)과 새로운 값(value)을 지정합니다. 여러 열을 동시에 수정할 수 있습니다.
- **`WHERE condition`**: (선택 사항) 특정 조건을 만족하는 행들만 업데이트합니다. 이 조건이 없으면 테이블의 모든 행이 업데이트됩니다.
### 예제
1. **단일 열 수정**:
```sql
UPDATE employees
SET salary = 60000
WHERE emp_id = 101;
```
- `employees` 테이블에서 `emp_id`가 `101`인 행의 `salary` 열 값을 `60000`으로 수정합니다.
2. **여러 열 수정**:
```sql
UPDATE employees
SET salary = 60000, job_title = 'Senior Developer'
WHERE emp_id = 101;
```
- `employees` 테이블에서 `emp_id`가 `101`인 행의 `salary` 열을 `60000`으로, `job_title` 열을 `'Senior Developer'`로 수정합니다.
3. **모든 행 수정 (주의!)**:
```sql
UPDATE employees
SET salary = 50000;
```
- `employees` 테이블의 모든 행의 `salary` 값을 `50000`으로 수정합니다. `WHERE` 절이 없기 때문에, 모든 행이 업데이트됩니다.
### `WHERE` 절의 중요성
- `WHERE` 절은 업데이트를 특정 행에만 적용하기 위해 사용됩니다. 만약 `WHERE` 절을 생략하면, 테이블의 모든 행이 업데이트됩니다.
- 따라서, 대규모의 테이블에서 `WHERE` 절 없이 `UPDATE`를 실행하면 의도하지 않은 대량의 데이터 변경이 발생할 수 있습니다.
### 추가적인 기능
- **연산자를 사용한 업데이트**: 특정 열의 값을 증가시키거나 감소시킬 수 있습니다.
```sql
UPDATE employees
SET salary = salary + 5000
WHERE emp_id = 101;
```
- `emp_id`가 `101`인 행의 `salary` 열 값을 기존 값에서 `5000`만큼 증가시킵니다.
- **서브쿼리(Subquery)를 사용한 업데이트**: 다른 테이블에서 값을 가져와 업데이트할 수 있습니다.
```sql
UPDATE employees
SET salary = (SELECT AVG(salary) FROM employees)
WHERE department_id = 10;
```
- `department_id`가 `10`인 모든 직원의 급여를 전체 직원의 평균 급여로 업데이트합니다.
### 주의사항
- **데이터 무결성 유지**: `UPDATE` 문을 사용하여 데이터를 변경할 때는 데이터의 무결성이 유지되도록 주의해야 합니다. 예를 들어, 외래 키 제약 조건을 위반하지 않도록 해야 합니다.
- **백업**: 중요한 데이터를 업데이트하기 전에 항상 데이터를 백업하는 것이 좋습니다. 잘못된 `UPDATE` 문은 데이터를 복구하기 어렵게 만들 수 있습니다.
`UPDATE ... SET` 구문은 데이터베이스의 특정 데이터를 변경하는 매우 중요한 도구입니다. 이 명령을 사용하여 기존 데이터를 효율적으로 수정할 수 있으며, `WHERE` 절을 사용하여 특정 행에만 영향을 줄 수 있습니다.
'Data Analysis 데이터 분석 > SQL 통한 Database 관리' 카테고리의 다른 글
savepoint ? (0) | 2024.08.29 |
---|---|
rollback to savepoint (0) | 2024.08.29 |
GROUP BY 예시 (0) | 2024.08.29 |
groupby 가 어떻게 실행되는지 예시로 알려줘 (0) | 2024.08.29 |
group by할 열에 null이 있을 경우 (0) | 2024.08.29 |