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
'Database > MariaDB' 카테고리의 다른 글
MariaDB : 데이터 무결성을 위한 제약 조건 (1) | 2024.10.17 |
---|---|
MariaDB : DCL (Data Control Language)과 TCL(Transaction Control Language)에 데해서 (0) | 2024.10.17 |
MariaDB : DML(Data Manipulation Language)에 대해서 (1) | 2024.10.16 |
MariaDB : DDL(Data Definition Language)에 대해서 (0) | 2024.10.16 |
MariaDB : 서브쿼리에 대해서 (0) | 2024.10.15 |
MariaDB: JOIN절에 대해서 (0) | 2024.10.15 |
MariaDB : 그룹함수, GROUP BY, HAVING절에 대해서 (0) | 2024.10.14 |
MariaDB : SQL 주요함수에 대해서 (0) | 2024.10.14 |