본문 바로가기
Database/MariaDB

MariaDB : JSON 데이터 사용하기

by 코딩쥐 2024. 10. 17.

JSON데이터는 데이터를 교환하기 위해 만든 포맷으로, 속성(key)과 값(value)으로 구성되어 있다. JSON 데이터는 중괄호{}로 객체를 정의하고, 대괄호[]로 배열을 정의한다. 

 

JSON 데이터 삽입하기

데이터 유형이 JSON인 칼럼을 생성한 후에, INSERT를 통해서 JSON 파일을 삽입할 수 있다.

#FAVORITE_COLOR, FAVORITE_NUM 이라는 JSON정보가 있는 FAVORITE이라는 칼럼을 생성한다.
ALTER TABLE userinfo ADD favorite JSON;

# userinfo의 favorite에 JSON파일로 데이터를 삽입한다. 
INSERT INTO userinfo(ename, gender, age, uloc, favorite) VALUES 
('JI', 'WOMAN', 30, 'KOREA', '{"favorite_color" : "blue", "favorite_num": 2}');

# JSON_OBJECT로 JSON파일 삽입
INSERT INTO userinfo(ename, gender, age, uloc, favorite) VALUES
('Michael', 'MAN', 22, 'MEXICO', JSON_OBJECT('favorite_color','white','favorite_num',9));

JSON 데이터 유형으로 설정하면 해당하는 칼럼에서 데이터 유형은 LONGTEXT 타입에 제약 조건이 JSON으로 설정 되어 있어서 JSON 데이터만 삽입이 가능하다. 

JSON 데이터에 배열을 넣고 싶을 경우에는, JSON_ARRAY를 사용해서 데이터를 삽입할 수 있다. 

#JSON파일에 배열 삽입
INSERT INTO userinfo(ename, gender, age, uloc, favorite) VALUES
('ADAMS', 'MAN', 39, 'USA', JSON_OBJECT('favorite_color', 'gray', 'favorite_num', 2, 'seasons', JSON_ARRAY('봄', '가을')));

 

JSON 데이터 추출하기

  • SELECT JSON_EXTRACT(해당칼럼, '$.key값') FROM 테이블명;
#JSON 데이터 추출하기
SELECT ename, gender, age, uloc, JSON_EXTRACT(favorite, '$.favorite_num') FROM userinfo WHERE ename ='ADAMS';

 

 

JSON 데이터 업데이트

  • UPDATE JSON_REPLACE(해당칼럼, '$.key값', '새로운 값') FROM 테이블명;
#JSON 데이터 업데이트
INSERT INTO userinfo(ename, gender, age, uloc, favorite) VALUES
('LINA', 'WOMAN', 22, 'VIETNAM', JSON_OBJECT('favorite_color', 'black', 'favorite_num', 7, 'seasons', JSON_ARRAY('여름', '가을')));

#favorite_color lightgray로 변경
UPDATE userinfo
SET favorite = JSON_REPLACE(favorite, '$.favorite_color', 'lightgray')
WHERE ename = 'LINA';

#favorite_num을 77로 변경하면서 호출
SELECT ename, gender, age, uloc, JSON_REPLACE(favorite, '$.favorite_num', '77') 
FROM userinfo WHERE ename ='LINA';

 

 

JSON 데이터에서 사용할 수 있는 추가적인 함수는 아래 홈페이지에서 확인할 수 있다. 

JSON Functions - MariaDB Knowledge Base

 

JSON Functions

 

mariadb.com