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

이미 생성된 MySQL 테이블에 새 열을 추가하고 자동으로 채우는 방법

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 작업 없이도 기존 데이터를 기반으로 하는 새로운 열을 간편하게 추가할 수 있으며, 데이터 일관성 유지에도 큰 도움이 됩니다.