Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

현재 값을 몰라도 SQL에서 테이블의 INT 열에 값 더하기 — UPDATE·SET 완벽 가이드

열의 현재 값이 얼마인지 알지 못하더라도 UPDATE 명령과 SET 절을 함께 사용하면 간단히 해결할 수 있습니다. 핵심은 SET 열이름 = 열이름 + 더할값처럼 기존 열 값을 그대로 참조하는 것입니다. 아래에서 예제와 함께 단계별로 살펴보겠습니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 만들어 보겠습니다.

mysql> create table DemoTable
(
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentScore int
);
Query OK, 0 rows affected (0.81 sec)

2. 샘플 데이터 삽입하기

INSERT 명령을 사용해 테이블에 레코드를 추가합니다.

mysql> insert into DemoTable(StudentScore) values(78);
Query OK, 1 row affected (0.46 sec)
mysql> insert into DemoTable(StudentScore) values(89);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(StudentScore) values(67);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(StudentScore) values(95);
Query OK, 1 row affected (0.25 sec)

3. 전체 레코드 확인하기

SELECT 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable;

실행 결과는 다음과 같습니다.

+-----------+--------------+
| StudentId | StudentScore |
+-----------+--------------+
|         1 |           78 |
|         2 |           89 |
|         3 |           67 |
|         4 |           95 |
+-----------+--------------+
4 rows in set (0.00 sec)

4. 현재 값을 몰라도 값 더하기

아래 쿼리처럼 열 자기 자신을 참조해 값을 더하면, 현재 값이 무엇인지 미리 알 필요가 없습니다. 여기서는 StudentId가 3인 학생의 점수에 21을 더해 보겠습니다.

mysql> update DemoTable
    set StudentScore=StudentScore+21
    where StudentId=3;
Query OK, 1 row affected (0.22 sec)
Rows matched : 1 Changed : 1 Warnings : 0

5. 변경 결과 확인하기

테이블의 레코드를 다시 한번 조회해 보겠습니다.

mysql> select *from DemoTable;

StudentId가 3인 행의 점수가 67에서 88로 정확히 21만큼 증가한 것을 확인할 수 있습니다.

+-----------+--------------+
| StudentId | StudentScore |
+-----------+--------------+
|         1 |           78 |
|         2 |           89 |
|         3 |           88 |
|         4 |           95 |
+-----------+--------------+
4 rows in set (0.00 sec)

참고 사항

WHERE 절을 생략하면 테이블의 모든 행에 동일한 연산이 적용되므로 주의해야 합니다. 또한 이 방법은 MySQL뿐 아니라 PostgreSQL, SQL Server, Oracle 등 대부분의 관계형 데이터베이스에서 동일하게 작동합니다. 감소 연산이 필요하다면 + 대신 -를 사용하면 됩니다.