JSON 배열을 MySQL에 저장하려면 JSON 데이터 타입을 활용하면 됩니다. MySQL 5.7 버전부터 지원되는 이 데이터 타입은 JSON 형식의 문자열을 그대로 저장하면서도 유효성 검사와 다양한 JSON 함수를 함께 사용할 수 있다는 장점이 있습니다.
1. JSON 타입 컬럼으로 테이블 생성하기
먼저 JSON 타입의 컬럼을 가진 테이블을 생성해 보겠습니다.
mysql> create table DemoTable1438 -> ( -> EmployeeDetails json -> ); Query OK, 0 rows affected (5.97 sec)
위 예제에서는 직원 정보를 담기 위해 EmployeeDetails라는 이름의 JSON 타입 컬럼을 선언했습니다.
2. JSON 배열 데이터 삽입하기
이제 insert 문을 사용하여 JSON 배열 형태의 레코드를 테이블에 삽입합니다.
mysql> insert into DemoTable1438 values('[{"EmployeeId":"EMP-101","EmployeeName":"Chris"},{"EmployeeId":"EMP-102","EmployeeName":"David"},{"EmployeeId":"EMP-103","EmployeeName":"Sam"}]');
Query OK, 1 row affected (0.22 sec)삽입된 값은 세 명의 직원 정보를 포함하는 JSON 배열입니다. 각 객체에는 사원 ID(EmployeeId)와 이름(EmployeeName)이 키-값 쌍으로 저장되어 있습니다.
3. 저장된 데이터 조회하기
select 문을 사용하여 테이블에 저장된 모든 레코드를 조회할 수 있습니다.
mysql> select * from DemoTable1438;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+------------------------------------------------------------------------------------------------------------------------------------------------------------+
| EmployeeDetails |
+------------------------------------------------------------------------------------------------------------------------------------------------------------+
| [{"EmployeeId": "EMP-101", "EmployeeName": "Chris"}, {"EmployeeId": "EMP-102", "EmployeeName": "David"}, {"EmployeeId": "EMP-103", "EmployeeName": "Sam"}] |
+------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)마무리
이처럼 MySQL의 JSON 데이터 타입을 사용하면 별도의 변환 과정 없이 JSON 배열을 그대로 데이터베이스에 저장할 수 있습니다. 또한 JSON_EXTRACT(), JSON_CONTAINS() 같은 내장 함수를 활용하면 저장된 JSON 데이터 내부의 특정 값을 손쉽게 조회하거나 조건 검색할 수 있어, 유연한 스키마가 필요한 애플리케이션 개발에 매우 유용합니다.