MySQL에서 기존 데이터에 데이터 추가하기
MySQL에서 기존 컬럼의 값을 유지하면서 새로운 문자열을 덧붙이고 싶다면 CONCAT() 함수를 사용하면 됩니다. 이 함수는 여러 문자열을 하나로 연결해 주는 역할을 하며, UPDATE 문과 함께 사용하면 기존 데이터 뒤에 원하는 내용을 손쉽게 추가할 수 있습니다.
먼저 예제에 사용할 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
UserId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
UserName varchar(100)
);
Query OK, 0 rows affected (0.43 sec)다음으로 INSERT 명령어를 사용해 테이블에 레코드를 삽입합니다.
mysql> insert into DemoTable(UserName) values('John');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable(UserName) values('Chris');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(UserName) values('Robert');
Query OK, 1 row affected (0.11 sec)SELECT 문으로 테이블의 모든 레코드를 확인해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+--------+----------+ | UserId | UserName | +--------+----------+ | 1 | John | | 2 | Chris | | 3 | Robert | +--------+----------+ 3 rows in set (0.00 sec)
CONCAT() 함수로 기존 데이터에 값 연결하기
이제 핵심인 CONCAT() 함수를 활용한 쿼리를 살펴보겠습니다. 아래 예제는 UserId가 1인 행의 기존 이름 'John' 뒤에 ' Smith'라는 성을 연결하여 'John Smith'로 업데이트하는 과정입니다.
mysql> update DemoTable set UserName=concat(UserName,' Smith') where UserId=1; Query OK, 1 row affected (0.12 sec) Rows matched: 1 Changed: 1 Warnings: 0
업데이트 후 테이블의 레코드를 다시 한번 확인해 보겠습니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+--------+------------+ | UserId | UserName | +--------+------------+ | 1 | John Smith | | 2 | Chris | | 3 | Robert | +--------+------------+ 3 rows in set (0.00 sec)
정리 및 참고 사항
이처럼 CONCAT() 함수와 UPDATE 문을 조합하면 기존 데이터를 삭제하지 않고도 새로운 문자열을 자연스럽게 덧붙일 수 있습니다. 몇 가지 유용한 팁을 추가로 알려드리면:
- 구분자 활용: CONCAT_WS() 함수를 사용하면 첫 번째 인자로 지정한 구분자(예: 공백, 콤마)를 자동으로 삽입하며 여러 문자열을 연결할 수 있습니다.
- NULL 처리: CONCAT() 함수는 인자 중 하나라도 NULL이면 전체 결과가 NULL이 됩니다. 따라서 IFNULL() 또는 COALESCE() 함수를 함께 사용하면 안전하게 처리할 수 있습니다.
- WHERE 절 필수: WHERE 조건 없이 UPDATE를 실행하면 테이블의 모든 행이 변경되므로 반드시 조건을 명시해야 합니다.