MySQL 5.7 버전부터 JSON 데이터 타입을 기본적으로 지원하기 때문에, 별도의 확장 없이도 JSON 형식의 데이터를 컬럼에 그대로 저장할 수 있습니다. 이번 글에서는 JSON 타입의 컬럼을 가진 테이블을 생성하고, 실제로 데이터를 삽입한 뒤 조회하는 과정까지 단계별로 살펴보겠습니다.
1. JSON 타입 컬럼을 가진 테이블 생성
먼저 JSON 타입의 컬럼을 포함하는 테이블을 생성합니다. 아래 예제에서는 이름 목록을 저장하기 위한 ListOfNames 컬럼을 JSON 타입으로 정의했습니다.
mysql> create table DemoTable1832 ( ListOfNames JSON ); Query OK, 0 rows affected (0.00 sec)
Query OK 메시지가 출력되면 테이블이 성공적으로 생성된 것입니다.
2. INSERT 문으로 JSON 데이터 삽입
이제 INSERT 명령어를 사용해 JSON 배열 형태의 데이터를 여러 개 삽입해 보겠습니다. JSON 문자열은 작은따옴표(')로 감싸서 전달하면 됩니다.
mysql> insert into DemoTable1832(ListOfNames) values('["Sam", "Mike", "Carol"]');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1832(ListOfNames) values('["David", "Bob"]');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1832(ListOfNames) values('["Adam", "John", "Sam"]');
Query OK, 1 row affected (0.00 sec)
세 개의 레코드가 모두 정상적으로 삽입되었습니다.
3. SELECT 문으로 데이터 조회
저장된 데이터가 올바르게 들어갔는지 확인하기 위해 SELECT 문으로 전체 레코드를 조회합니다.
mysql> select * from DemoTable1832;
위 쿼리를 실행하면 다음과 같은 결과를 확인할 수 있습니다.
+--------------------------+ | ListOfNames | +--------------------------+ | ["Sam", "Mike", "Carol"] | | ["David", "Bob"] | | ["Adam", "John", "Sam"] | +--------------------------+ 3 rows in set (0.00 sec)
정리
이처럼 MySQL에서는 JSON 타입 컬럼을 선언하는 것만으로 JSON 문자열을 손쉽게 저장하고 조회할 수 있습니다. 참고로 MySQL은 삽입 시점에 JSON 유효성을 검사하기 때문에, 잘못된 형식의 JSON을 넣으면 에러가 발생합니다. 또한 JSON_EXTRACT(), ->, ->> 연산자 등을 활용하면 저장된 JSON 내부의 특정 값만 추출하거나 조건 검색을 하는 것도 가능합니다.