MYSQL Json type column
Mysql 5.7.8 에서 부터는 JSON 타입이라는 column이 생겨서
(Javascript object Notation) 을 저장해서 사용할 수 있다.
장점
- 자동 valdiation 체크
- 저장 포맷의 최적화
- JSON object를 다 읽을 필요 없이 key, value를 찾을수 있습니다.
제한
- JSON type의 길이 제한 : 환경변수: max_allowed_packet 을 찾아봅니다.
- JSON type의 정렬 제한 : max_sort_length 설정 값을 따릅니다.
정보
- JSON context의 string format은 utf8mb4
메소드
- JSON_ARRAY:
- JSON Array를 만드는 함수
- eg) JSON_ARRAY(‘list1’, ‘list2’, ‘list3’) = [list1,list2,list3]
- JSON_OBJECT:
- JSON Object를 만드는 함수
- eg) JSON_OBJECT(‘key1’, value, ‘key2’, value) = {key1: value, key2: value}
- JSON_MERGE:
- 두개의 JSON Object를 머지하는 함수
- eg) JSON_MERGE({x1: v1}, {x2: v2}) = {x1: v1, x2: v2}
- JSON_EXTRACT:
- JSON Object에서 key에 해당하는 value의 검색하는 메소드 입니다.
$ 를 통해 검색 함, $.{{KEY_NAME}}, $[{{INDEX_NUM}}] 로도 접근 가능
$[] 를 통해 모든 값도 가져올수 있음 ) 파이썬의 values 와 같은 느낌
$*.b를 통해 sub object도 검색 가능
JSON_EXTRACT(‘{“name”: ‘daniel’, “id”: 1}’, $.name) = daniel —검색시 대소문자 구분 : null, true,false 도 예외는 아닙니다.
- JSON_INSERT:
- JSON object에 JSON object를 추가하는 메소드 입니다.
- key,value를 추가할수 있습니다. 이미 있을 경우 변경되지 않습니다.
- JSON_REPLACE:
- JSON object에 key에 매칭되는 값을 변경하는 메소드 입니다.
- key에 해당하는 value를 변경할수 있습니다. 이미 있지 않을 경우 추가 되지 않습니다.
- JSON_SET:
- JSON_INSERT + JSON_REPLACE를 합친 메소드 입니다.
- JSON_REMOVE:
- 들어간 내용을 제거하고, 제거된 JSON을 리턴합니다.
연산자
- = ,< ,<=, >, =>, <=> operator 사용가능 BETWEEN, IN은 제공안합니다.
비교시 우선 순위
- BLOB
- BIT
- OPAQUE
- DATETIME
- TIME
- DATE
- BOOLEAN
- ARRAY
- OBJECT
- STRING
- INTEGER, DOUBLE
- NULL
ORDER BY 도 지원
- ORDER BY CAST(JSON_EXTRACT(jdoc, ‘$.id’) AS UNSIGNED)
댓글 없음:
댓글 쓰기