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

MySQL에서 두 개의 필드를 결합해 세 번째 필드로 업데이트하는 방법

MySQL에서는 FirstNameLastName처럼 분리되어 있는 두 개의 컬럼 값을 하나로 합쳐 새로운 컬럼에 저장해야 하는 경우가 자주 발생합니다. 대표적인 예가 이름과 성을 결합하여 FullName(전체 이름) 컬럼을 만드는 것입니다. 이 글에서는 ALTER TABLECONCAT() 함수를 활용해 이 작업을 수행하는 방법을 단계별로 살펴보겠습니다.

기본 문법

두 개의 필드를 결합하여 세 번째 필드에 저장하려면 먼저 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 TABLEFullName 컬럼을 추가하고, 이어서 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() 함수를 함께 활용하는 것도 좋은 방법입니다.