MySQL 테이블에 STORED GENERATED COLUMN(저장 생성 컬럼)을 추가하려면 일반적인 컬럼 추가 문법을 그대로 사용하면 됩니다. 다만 데이터 타입 뒤에 AS(표현식)과 STORED 키워드를 함께 지정해 주어야 합니다.
문법(Syntax)
ALTER TABLE table_name ADD COLUMN column_name AS(expression) STORED;
예제(Example)
다음 예제는 employee_data_stored 테이블에 First_name과 Last_name 값을 공백으로 연결한 FULLName이라는 저장 생성 컬럼을 추가하는 과정입니다.
mysql> ALTER TABLE employee_data_stored ADD COLUMN FULLName Varchar(200) AS (CONCAT_WS(" ", 'First_name','Last_name')) STORED;
Query OK, 2 rows affected (1.23 sec)
Records: 2 Duplicates: 0 Warnings: 0쿼리가 성공적으로 실행되었습니다. 이제 DESCRIBE 명령으로 테이블 구조를 확인해 보겠습니다.
mysql> Describe employee_data_stored; +------------+--------------+------+-----+---------+------------------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+------------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | First_name | varchar(50) | NO | | NULL | | | Last_name | varchar(50) | NO | | NULL | | | FULL_NAME | varchar(90) | YES | | NULL | STORED GENERATED | | FULLName | varchar(200) | YES | | NULL | STORED GENERATED | +------------+--------------+------+-----+---------+------------------+ 5 rows in set (0.00 sec)
출력 결과의 Extra 열에 STORED GENERATED라고 표시되어 있는 것을 확인할 수 있습니다. 이는 해당 컬럼들이 실제 값으로 디스크에 저장되는 생성 컬럼임을 의미합니다.
STORED와 VIRTUAL의 차이점
참고로 MySQL의 생성 컬럼은 두 가지 유형이 있습니다. STORED 타입은 행이 삽입되거나 수정될 때 계산된 값을 물리적으로 저장하여 읽기 속도가 빠르지만 저장 공간을 차지합니다. 반면 VIRTUAL 타입은 값을 저장하지 않고 읽을 때마다 동적으로 계산하므로 저장 공간은 절약되지만 조회 시 약간의 연산 비용이 발생합니다. 자주 조회되는 컬럼이라면 위 예제처럼 STORED 방식을 사용하는 것이 좋습니다.