배열 (Array)란?
JSON_ARRAY, JSON_TYPE으로 배열 테이블과 컬럼을 만들고 타입을 확인해보자.
JSON_ARRAY : 입력을 JSON 배열로 반환하는 함수.
JSON_TYPE : JSON 데이터의 타입을 반환하는 함수
JSON_ARRAY를 활용한 테이블, 컬럼 생성코드
CREATE TABLE IF NOT EXISTS `products` (
`product_id` int(6) NOT NULL,
`category` varchar(40) NOT NULL,
`name` varchar(10) NOT NULL,
`price` int unsigned NOT NULL,
'options' JSON NULL, -- 옵션컬럼을 JSON타입으로 추가
PRIMARY KEY (`product_id`)
);
INSERT INTO `products` (`product_id`, `category`, `name`, `price`,'options') VALUES
(0, '키즈', '어린이칫솔', 1500, JSON_ARRAY('빨강','파랑')), -- JSON_ARRAY함수에 배열의 원소가 될 값들을 넣어줌.
(1, '스포츠', '손목보호대', 10000,JSON_ARRAY('S', 'M', 'L' )),
(2, '주방용품', '밥그릇', 2000, JSON_ARRAY('소', '중', '대')),
(3, '디지털', '마우스', 15000, NULL);
생성된 테이블) options컬럼에 배열이 잘 들어감.

JSON_ARRAY를 사용하지 않고도 배열타입을 만들 수 있다.
작은따옴표, 큰따옴표 사용!
- -INSERT 구문에서.
(0, '키즈', '어린이칫솔', 1500, JSON_ARRAY('빨강','파랑')), -- JSON_ARRAY함수 사용.
(1, '스포츠', '손목보호대', 10000,'["S","M","L"]'), --따옴표를 활용한 배열
JSON_TYPE을 활용하여 TYPE 확인.
SELECT options, JSON_TYPE(options)
FROM products
결과값) JSON_ARRAY함수와 따옴표를 활용한 배열 모두array 형태로 잘 들어감.

Nested Array - 배열에 배열을 넣어보자.
스포츠 손목보호대를 예로
사이즈별 배열이 있다고 하자.
그리고 사이즈 별로 색상이 있다고 한다면,
사이즈 배열 하위에 색상 배열도 추가해줘야 된다.
구문 : JSON_ARRAY(JSON_ARRAY(”리스트”), JSON_ARRAY(”리스트”))
CREATE TABLE IF NOT EXISTS `products` (
`product_id` int(6) NOT NULL,
`category` varchar(40) NOT NULL,
`name` varchar(10) NOT NULL,
`price` int unsigned NOT NULL,
'options' JSON NULL, -- 옵션컬럼을 JSON타입으로 추가
PRIMARY KEY (`product_id`) );
INSERT INTO `products` (`product_id`, `category`, `name`, `price`,'options') VALUES
(0, '키즈', '어린이칫솔', 1500, JSON_ARRAY('빨강','파랑')),
(1, '스포츠', '손목보호대', 10000,JSON_ARRAY(JSON_ARRAY('S', 'M', 'L'),
JSON_ARRAY('빨강','파랑')),--JSON_ARRAY안에 함수를 추가로 넣어줌.
(2, '주방용품', '밥그릇', 2000, JSON_ARRAY('소', '중', '대')),
(3, '디지털', '마우스', 15000, NULL);
결과값
손목보호대의 옵션컬럼이
[”S”, “M”, “L”], [”빨강”, “파랑”] 두개의 리스트를 반환함.
JSON_EXTRACT()
ARRAY 내부 데이터에 접근 하여 데이터를 뽑는 함수.
$ = 배열 키를 지정하는 문장.
$[] = []안에는 인덱스 번호를 넣어서 키를 인덱싱함.
예시)옵션 컬럼에서 모든값을 가져오는 쿼리
$ 달러표시 만 입력하면 배열의 전체를 끌고옴.
SELECT JSON_EXTRACT(oprions, '$') as all_elements -- 옵션 컬럼에서 모든값을 가져오는 쿼리
FROM products
결과값) 모든 값을 가져옴.

예시)옵션 컬럼의 배열에서 첫번째값을 가져오는 쿼리
SELECT JSON_EXTRACT(oprions, '$[0]') as all_elements -- 옵션 컬럼에서 인덱스 0인 값을 가져옴
FROM products
결과값) 첫번째 인덱스를 가져옴.
