MySQL에서 JSON 데이터 타입으로 데이터 저장하기
MySQL에서는 JSON 데이터 타입을 활용하여 데이터를 JSON 형식 그대로 저장할 수 있습니다. JSON 타입은 MySQL 5.7.8 버전부터 공식 지원되며, 구조가 유연하거나 스키마가 자주 변경되는 데이터를 저장할 때 특히 유용합니다.
1. 테이블 생성하기
먼저 JSON 컬럼을 포함하는 테이블을 생성해 보겠습니다.
mysql> CREATE table JsonAsMySQLDemo
-> (
-> id int,
-> name varchar(100),
-> PageDemo JSON,
-> eventInfo JSON
-> );
Query OK, 0 rows affected (0.67 sec)
테이블이 정상적으로 생성되었습니다. 위 예제에서 PageDemo와 eventInfo 두 컬럼이 일반적인 INT나 VARCHAR가 아닌 JSON 타입으로 선언된 점에 주목하세요.
2. JSON 형식의 레코드 삽입하기
이제 JSON 형식의 문자열 데이터를 해당 컬럼에 삽입합니다.
mysql> INSERT into JsonAsMySQLDemo values
-> (
-> 1,
-> 'John',
-> '{"Page1":"/"}',
-> '{"OperatingSystem":"Windows"}'
-> );
Query OK, 1 row affected (0.24 sec)
mysql> insert into JsonAsMySQLDemo values
-> (
-> 2,
-> 'Bob',
-> '{"Page2":"/"}',
-> '{"OperatingSystem":"Solaris"}'
-> );
Query OK, 1 row affected (0.14 sec)
INSERT 문에서 JSON 데이터는 작은따옴표로 감싸진 문자열 형태로 전달됩니다. MySQL은 입력값이 유효한 JSON인지 자동으로 검증하며, 잘못된 형식일 경우 에러를 반환하고 저장하지 않습니다.
3. 저장된 데이터 조회하기
저장된 모든 레코드를 확인하려면 SELECT 문을 사용합니다.
mysql> select * from JsonAsMySQLDemo;
다음은 실행 결과입니다.
+------+------+----------------+--------------------------------+
| id | name | PageDemo | eventInfo |
+------+------+----------------+--------------------------------+
| 1 | John | {"Page1": "/"} | {"OperatingSystem": "Windows"} |
| 2 | Bob | {"Page2": "/"} | {"OperatingSystem": "Solaris"} |
+------+------+----------------+--------------------------------+
2 rows in set (0.00 sec)
결과를 보면 JSON 문자열로 삽입한 데이터가 정상적으로 JSON 객체 형태로 저장된 것을 확인할 수 있습니다. 이처럼 JSON 데이터 타입을 사용하면 별도의 문자열 변환 없이 구조화된 데이터를 손쉽게 관리할 수 있으며, 이후 JSON_EXTRACT() 같은 JSON 함수를 통해 저장된 값의 특정 필드만 조회하거나 수정하는 것도 가능합니다.