MySQL에서 이미 존재하는 테이블에 새로운 열(column)을 추가한 후, 해당 열에 데이터를 삽입해야 하는 경우가 자주 발생합니다. 이 과정은 ALTER TABLE 문으로 열을 추가하고, UPDATE 문으로 데이터를 입력하는 두 단계로 진행됩니다.
1단계: 테이블 생성
먼저 예제로 사용할 테이블을 생성합니다.
mysql> create table DemoTable(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name varchar(100)
);
Query OK, 0 rows affected (0.47 sec)
2단계: 레코드 삽입
INSERT 명령어를 사용하여 테이블에 몇 개의 레코드를 삽입합니다.
mysql> insert into DemoTable(Name) values('John');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Name) values('Bob');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(Name) values('Adam');
Query OK, 1 row affected (0.28 sec)3단계: 테이블 데이터 확인
SELECT 문을 사용하여 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+----+------+
| Id | Name |
+----+------+
| 1 | John |
| 2 | Bob |
| 3 | Adam |
+----+------+
3 rows in set (0.00 sec)
4단계: 새 열 추가하기
이제 ALTER TABLE 문을 사용하여 Gender라는 새 열을 추가합니다. 여기서는 ENUM 타입을 활용하여 'MALE' 또는 'FEMALE' 값만 허용되도록 설정했습니다.
mysql> alter table DemoTable add column Gender ENUM('MALE','FEMALE');
Query OK, 0 rows affected (0.55 sec)
Records : 0 Duplicates : 0 Warnings : 0새로 추가된 열에는 기존 레코드의 값이 NULL로 설정된다는 점에 유의하세요.
5단계: 새 열에 데이터 삽입하기
기존 테이블의 새 열에 데이터를 삽입하려면 UPDATE 문을 사용합니다. WHERE 절로 특정 레코드를 지정할 수 있습니다.
mysql> update DemoTable set Gender='FEMALE' where Id=2;
Query OK, 1 row affected (0.13 sec)
Rows matched : 1 Changed : 1 Warnings : 0
6단계: 최종 결과 확인
테이블의 레코드를 다시 한번 조회하여 변경 사항을 확인합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+------+--------+
| Id | Name | Gender |
+----+------+--------+
| 1 | John | NULL |
| 2 | Bob | FEMALE |
| 3 | Adam | NULL |
+----+------+--------+
3 rows in set (0.00 sec)
출력 결과를 보면 Id가 2인 Bob의 레코드에만 'FEMALE' 값이 성공적으로 삽입되었고, 나머지 레코드는 아직 업데이트되지 않아 NULL로 표시되는 것을 확인할 수 있습니다. 동일한 방식으로 UPDATE 문을 반복 실행하거나 조건을 조정하여 나머지 레코드의 데이터도 채울 수 있습니다.