SQL 통한 Database 관리

update set

JBS 12 2024. 8. 29. 20:59

`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` 절을 사용하여 특정 행에만 영향을 줄 수 있습니다.

'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