IT수업/데이터베이스

it 수업 7주차 (23) JSON

워제하 2024. 2. 5. 12:28

 

 

MYSQL로 JSON을 사용해 볼 것이다.

- JOSON데이터의 기본은 문자열

 

 

- 데이터 생성

● JSON_OBJECT : json 단위 생성 함수이다. 

                              방식은 (key, vlaue, key, value ....)로 사용한다.

 

 

 

다음은 변수로 넣는 방법이다.

 

@변수로 사용해 값을 넣을 수 있다.

 

 

 

 

 

또 다른 방법으로는 json_object를 사용하지 않고 "{''}" 를 사용해 값을 넣을 수도 있다.

 

 

 

또 다른 방법으로 값을 넣을 수도 있다.

 

 

 

 

- 데이터 확인

 

● json_valid : 데이터 포멧이 유효한지 참, 거짓으로 확인하는 것

 

1은 참, 0은 거짓

 

 

 

 

● json_search : 데이터 위치 찾기

 

여기서 userinfo[1]는 1번 인덱스에 있는 값들을 나타낸다. 즉 '서울'이라는 값은 1번 인덱스의 주소에 있다는 것이 된다.

(인덱스는 0번 부터 시작하게 된다.)

 

 

 

 

● json_extract : 데이터 내용 꺼내오기

 

 

 

 

● json_insert : 특정 위치에 값 넣기

 

 

 

 

 

● set : 변경한 값으로 변경

 

json_insert(@json_data_3, '$.userinfo[1].mDate',"2024-02-05") 에서 @json_data_3 으로 변경된 것을 볼 수 있다.

 

 

 

 

● json_replace : 내용 바꾸기

 

 

 

● json_remove : 삭제

json_data_3의 1번 인덱스가 사라진 것을 볼 수 있다.

 

 

 

 

 

- 테이블 만들고 값 넣기

 

 

 

 

 

테이블의 유효성 검사를 할 수 있다,

select json_valid(json_data) from tbl_json;

 

 

테이블에서 값의 위치를 찾을 수 있다,

select json_search(json_data,'one',"서울") from tbl_json; 

 

 

테이블의 이름 값만 뽑아 낼 수 있다.

select json_extract(json_data, '$.userinfo[*].name') from tbl_json;

 

 

기존 테이블에 값을 넣을 수 있다.

select json_insert(json_data, '$.userinfo[1].mDate',"2024-02-05") from tbl_json;

 

 

 

 

또 insert into방식으로 기존 테이블에 값을 넣을 수 있다.

insert into tbl_json values(4, '{"name" : "김영수", "age" : "33"}');

 

select json_extract(json_data, '$.name') from tbl_json; 로 이름만 뽑아낸다.

 

 

 

 

값을 하나 더 넣어봤다.

 

 

 

 

 

● 외부에서 json데이터 받아오기

 

공공데이터포털에서 json 데이터를 받아온다.

 

 

여기 URL을 눌러 데이터를 복사하여 가져온다. ('[ ]' 대괄호 사이에 있는 데이터들만 복사한다.

 

 

set @변수 = ' ' 으로 홑따옴표 사이에 대괄호안의 데이터들을 복사 해준다.

 

 

 

- 데이터명 보기

 

select json_extract(@중구맛집, "$[*].BZ_NM"); 으로 상호명만 뺄 수 있고 

select json_extract(@중구맛집, "$[64].BZ_NM"); 이렇게 원하는 상호명만 뺄 수도 있다.

select json_extract(@중구맛집, "$[0].BZ_NM","$[64].BZ_NM"); 이렇게 사용하여 여러 값을 뺄 수 도 있다.

 

 

여기서 BZ_NM은 음식점명이라고 선언되어 있기 때문에 BZ_NM이라 썼다.

 

 

 

- 데이터 위치 찾기

 

select json_search(@중구맛집,'all', '%국밥%'); 으로 '국밥'이 들어간 데이터의 위치를 찾아낼 수도 있다.

 

 

또 다른 방법으로 이렇게도 찾을 수 있다.

 

select json_search(json_extract(@중구맛집, "$[*].BZ_NM"), 'all', '%베이커리%');

 

 

 

 

 

 

 

 

 

 

 

출처 : https://www.data.go.kr/data/15057236/openapi.do

'IT수업 > 데이터베이스' 카테고리의 다른 글

it 수업 7주차 (25) Procedure  (1) 2024.02.07
it 수업 7주차 (24) PIVOT  (1) 2024.02.07
it 수업 7주차 (22) VIEW  (0) 2024.02.05
it 수업 6주차 (21) JOIN  (0) 2024.02.02
it 수업 6주차 (20) index  (0) 2024.02.02