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', '%베이커리%');

'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 |