MySQL 테이블에 가상 GENERATED COLUMN(가상 생성 열)을 추가하려면 일반적인 컬럼 추가 문법을 그대로 사용하되, 데이터 타입 뒤에 AS(expression)만 붙여주면 됩니다. 이렇게 하면 별도의 값을 저장하지 않고 쿼리 시점에 표현식이 계산되는 가상 컬럼이 생성됩니다.
기본 문법
ALTER TABLE table_name ADD COLUMN column_name AS(expression);
사용 예시
다음 예제는 employee_data 테이블에 이름과 성을 합쳐서 보여주는 FULLName이라는 가상 생성 열을 추가하는 과정입니다.
mysql> ALTER TABLE employee_data ADD COLUMN FULLName Varchar(200) AS(CONCAT_WS(" ", 'First_name','Last_name'));
Query OK, 0 rows affected (0.49 sec)
Records: 0 Duplicates: 0 Warnings: 0컬럼이 정상적으로 추가되었는지 DESCRIBE 명령으로 확인해 보겠습니다.
mysql> DESCRIBE employee_data; +------------+--------------+------+-----+---------+-------------------+ | 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 | VIRTUAL GENERATED | | FULLName | varchar(200) | YES | | NULL | VIRTUAL GENERATED | +------------+--------------+------+-----+---------+-------------------+ 5 rows in set (0.00 sec)
결과 해석
Extra 항목에 VIRTUAL GENERATED라고 표시된 것을 확인할 수 있습니다. 이는 해당 컬럼이 실제 데이터를 저장하지 않고, 조회할 때마다 정의된 표현식(CONCAT_WS(" ", First_name, Last_name))의 결과가 동적으로 계산됨을 의미합니다.
참고 사항
가상 생성 열은 디스크 공간을 사용하지 않는다는 장점이 있지만, 반대로 저장(STORED) 생성 열은 값이 물리적으로 저장되어 읽기 성능이 더 좋습니다. 따라서 계산 비용이 큰 표현식이거나 자주 조회되는 경우에는 STORED 옵션을 고려해볼 수 있습니다.