MySQL에서 이미 생성된 테이블에 새로운 열을 추가하고, 기존 데이터를 기반으로 그 값을 자동으로 채우려면 생성된 열(Generated Column) 기능을 활용할 수 있습니다. 아래 예제를 통해 전체 과정을 단계별로 살펴보겠습니다.
1. 테이블 생성
먼저 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> Value1 int,
-> Value2 int
-> );
Query OK, 0 rows affected (0.77 sec)
2. 데이터 삽입
INSERT 명령을 사용하여 테이블에 레코드를 삽입합니다.
mysql> insert into DemoTable values(10,10);
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable values(20,30);
Query OK, 1 row affected (0.24 sec)
3. 데이터 조회
SELECT 문을 사용하여 테이블의 모든 레코드를 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 10 | 10 |
| 20 | 30 |
+--------+--------+
2 rows in set (0.00 sec)
4. 새 열 추가 및 자동 채우기
다음은 MySQL 테이블에 세 번째 열을 생성하고 자동으로 값을 채우는 쿼리입니다. 여기서 불리언(Boolean)은 정수 컨텍스트에서 정수로 취급됩니다. 즉, 거짓(false)은 0, 참(true)은 1로 저장됩니다.
이 예제에서는 생성된 열(Generated Column)을 사용합니다. ALTER TABLE 문과 함께 GENERATED ALWAYS AS 구문을 적용하면, Value1과 Value2의 비교 결과가 Value3 열에 자동으로 계산되어 채워집니다.
mysql> alter table DemoTable add Value3 int generated always as (Value1 = Value2);
Query OK, 0 rows affected (0.51 sec)
Records: 0 Duplicates: 0 Warnings: 0
5. 결과 확인
다시 한번 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+--------+--------+--------+
| Value1 | Value2 | Value3 |
+--------+--------+--------+
| 10 | 10 | 1 |
| 20 | 30 | 0 |
+--------+--------+--------+
2 rows in set (0.00 sec)
결과를 보면 Value1과 Value2가 동일한 첫 번째 행은 Value3이 1(true)로, 값이 서로 다른 두 번째 행은 0(false)으로 자동 채워진 것을 확인할 수 있습니다. 이처럼 생성된 열을 사용하면 별도의 UPDATE 작업 없이도 기존 데이터를 기반으로 하는 새로운 열을 간편하게 추가할 수 있으며, 데이터 일관성 유지에도 큰 도움이 됩니다.