MySQL에서는 UPDATE 문과 WHERE 절을 함께 사용하면 특정 조건에 맞는 레코드만 골라서 수정할 수 있습니다. 이 글에서는 DATE 타입 컬럼의 값을 기준으로 테이블을 업데이트하는 과정을 예제와 함께 단계별로 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다. Id는 자동 증가(AUTO_INCREMENT) 기본 키로, Name은 문자열, AdmissionDate는 DATE 타입으로 정의했습니다.
mysql> create table DemoTable(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(100),
AdmissionDate date
);
Query OK, 0 rows affected (0.42 sec)
2. 샘플 데이터 삽입하기
INSERT 명령을 사용해 네 개의 레코드를 추가합니다.
mysql> insert into DemoTable(Name,AdmissionDate) values('Chris','2019-11-21');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable(Name,AdmissionDate) values('Mike','2019-03-11');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(Name,AdmissionDate) values('Sam','2018-04-01');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(Name,AdmissionDate) values('Carol','2019-05-01');
Query OK, 1 row affected (0.40 sec)3. 저장된 데이터 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+-------+---------------+
| Id | Name | AdmissionDate |
+----+-------+---------------+
| 1 | Chris | 2019-11-21 |
| 2 | Mike | 2019-03-11 |
| 3 | Sam | 2018-04-01 |
| 4 | Carol | 2019-05-01 |
+----+-------+---------------+
4 rows in set (0.00 sec)
4. DATE 값을 기준으로 UPDATE 실행하기
이제 특정 날짜 값(여기서는 2019-04-01)을 기준으로 레코드를 업데이트해 보겠습니다. WHERE 절에 조건을 지정하면 해당 조건에 일치하는 행만 선택적으로 변경되며, 나머지 데이터는 그대로 유지됩니다.
mysql> update DemoTable set Name='Robert',AdmissionDate='2019-04-01' where Id=3;
Query OK, 1 row affected (0.14 sec)
Rows matched: 1 Changed: 1 Warnings: 0
실행 결과 메시지를 보면 Rows matched: 1, Changed: 1로 표시되어, 조건에 맞는 한 개의 행이 실제로 변경되었음을 알 수 있습니다.
참고: UPDATE 문 사용 시 WHERE 절을 생략하면 테이블의 모든 행이 한꺼번에 수정되므로 주의해야 합니다. 중요한 데이터를 다룰 때는 먼저 SELECT 문으로 조건을 검증한 후 UPDATE를 실행하는 것이 안전합니다.
5. 업데이트 결과 확인하기
변경이 정상적으로 적용되었는지 SELECT 문으로 다시 확인해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+--------+---------------+
| Id | Name | AdmissionDate |
+----+--------+---------------+
| 1 | Chris | 2019-11-21 |
| 2 | Mike | 2019-03-11 |
| 3 | Robert | 2019-04-01 |
| 4 | Carol | 2019-05-01 |
+----+--------+---------------+
4 rows in set (0.00 sec)
Id가 3인 레코드의 Name이 'Sam'에서 'Robert'로, AdmissionDate가 '2018-04-01'에서 '2019-04-01'로 변경된 것을 확인할 수 있습니다. 이처럼 UPDATE 문에 적절한 조건을 지정하면 DATE 값을 포함한 원하는 컬럼의 값을 안전하고 정확하게 수정할 수 있습니다.