MySQL에서는 FirstName과 LastName처럼 분리되어 있는 두 개의 컬럼 값을 하나로 합쳐 새로운 컬럼에 저장해야 하는 경우가 자주 발생합니다. 대표적인 예가 이름과 성을 결합하여 FullName(전체 이름) 컬럼을 만드는 것입니다. 이 글에서는 ALTER TABLE과 CONCAT() 함수를 활용해 이 작업을 수행하는 방법을 단계별로 살펴보겠습니다.
기본 문법
두 개의 필드를 결합하여 세 번째 필드에 저장하려면 먼저 ALTER TABLE 문으로 새 컬럼을 추가한 뒤, CONCAT() 함수를 이용해 UPDATE 문으로 값을 채워 넣으면 됩니다. 기본 문법은 다음과 같습니다.
alter table yourTableName add column yourColumnName dataType; update yourTableName set yourAddedColumnName = concat(yourColumnName1, ' ', yourColumnName2);
1단계: 테이블 생성하기
먼저 실습에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1590
-> (
-> FirstName varchar(20),
-> LastName varchar(20)
-> );
Query OK, 0 rows affected (0.57 sec)2단계: 데이터 삽입하기
INSERT 명령을 사용하여 테이블에 샘플 레코드를 추가합니다.
mysql> insert into DemoTable1590 values('Adam','Smith');
Query OK, 1 row affected (0.45 sec)
mysql> insert into DemoTable1590 values('John','Doe');
Query OK, 1 row affected (0.42 sec)
mysql> insert into DemoTable1590 values('David','Miller');
Query OK, 1 row affected (0.16 sec)3단계: 현재 데이터 확인하기
SELECT 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable1590;
위 쿼리는 다음과 같은 결과를 출력합니다.
+-----------+----------+ | FirstName | LastName | +-----------+----------+ | Adam | Smith | | John | Doe | | David | Miller | +-----------+----------+ 3 rows in set (0.00 sec)
4단계: 필드 결합 후 세 번째 필드 업데이트하기
이제 두 개의 필드를 결합한 결과를 새로 추가한 세 번째 필드에 저장하는 쿼리를 실행합니다. 먼저 ALTER TABLE로 FullName 컬럼을 추가하고, 이어서 CONCAT() 함수로 이름과 성 사이에 공백을 넣어 결합한 값을 업데이트합니다.
mysql> alter table DemoTable1590 add column FullName varchar(40); Query OK, 0 rows affected (0.54 sec) Records: 0 Duplicates: 0 Warnings: 0 mysql> update DemoTable1590 set FullName=concat(FirstName,' ',LastName); Query OK, 3 rows affected (0.56 sec) Rows matched: 3 Changed: 3 Warnings: 0
5단계: 최종 결과 확인하기
테이블의 레코드를 다시 한번 조회하여 결합 결과가 정상적으로 반영되었는지 확인해 보겠습니다.
mysql> select * from DemoTable1590;
실행 결과는 다음과 같습니다.
+-----------+----------+--------------+ | FirstName | LastName | FullName | +-----------+----------+--------------+ | Adam | Smith | Adam Smith | | John | Doe | John Doe | | David | Miller | David Miller | +-----------+----------+--------------+ 3 rows in set (0.00 sec)
정리
이처럼 ALTER TABLE ... ADD COLUMN으로 새 컬럼을 추가한 후, UPDATE 문과 CONCAT() 함수를 조합하면 기존의 두 필드를 손쉽게 하나로 결합하여 세 번째 필드에 저장할 수 있습니다. 참고로 CONCAT_WS() 함수를 사용하면 구분자를 한 번만 지정해 여러 문자열을 결합할 수 있어 더욱 편리하며, 값 중 하나가 NULL일 경우 결과가 NULL이 되지 않도록 하려면 COALESCE()나 IFNULL() 함수를 함께 활용하는 것도 좋은 방법입니다.