PostgreSQL강의 PostgreSQL강좌 SQL무료강의 SQL무료강좌 SQL기초강의 SQL기초강좌
50강 SQL 초석 다지기 : PostgreSQL JSON Data Type
PostgreSQL
SQL 초석 다지기 50강 시작합니다.
본 강의는 PostgreSQL Tutorial을 참조합니다. https://www.postgresqltutorial.com/ |
이번 시간에는
▶ PostgreSQL JSON Data Type
에 대해서 알아보는 시간입니다.
요약: 이번 강의에서는 PostgreSQL JSON 데이터 유형과 JSON 데이터를 처리하는 데 유용한 연산자 및 함수를 사용하는 방법에 대해 배울 것입니다.
JSON : JavaScript Object Notation 속성-값 쌍(attribute–value pairs), 배열 자료형(array data types) 또는 기타 모든 시리얼화 가능한 값(serializable value) 또는 "키-값 쌍"으로 이루어진 데이터 오브젝트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷이다. 비동기 브라우저/서버 통신 (AJAX)을 위해, 넓게는 XML(AJAX가 사용)을 대체하는 주요 데이터 포맷이다. |
Introduction to PostgreSQL JSON data type
JSON은 자바스크립트 객체 표기법의 약자이다. JSON은 키-값 쌍으로 구성된 개방형 표준 형식입니다.
JSON의 주요 용도는 서버와 웹 애플리케이션 간에 데이터를 전송하는 것이다. 다른 포맷과 달리 JSON은 사람이 읽을 수 있는 텍스트이다.
PostgreSQL은 버전 9.2 이후 네이티브 JSON 데이터 유형을 지원합니다. JSON 데이터를 조작하기 위한 많은 기능과 연산자를 제공한다.
이제 JSON 데이터 유형으로 연습할 수 있는 새로운 테이블을 만드는 것으로 시작하겠습니다.
CREATE TABLE orders (
id serial NOT NULL PRIMARY KEY,
info json NOT NULL
);
주문 테이블은 두 개의 열로 구성됩니다.
● ID 열은 주문을 식별하는 기본 키 열입니다.
● INFO 열에는 JSON 형태로 데이터가 저장됩니다.
Insert JSON data
데이터를 JSON 열에 삽입하려면 데이터가 유효한 JSON 형식인지 확인해야 합니다. 다음 INSERT 문은 주문 테이블에 새 행을 삽입합니다.
INSERT INTO orders (info)
VALUES('{ "customer": "John Doe", "items": {"product": "Beer","qty": 6}}');
그것은 John Doe가 맥주 6병을 샀다는 것을 의미합니다.
다음 문은 여러 행을 동시에 삽입합니다.
INSERT INTO orders (info)
VALUES('{ "customer": "Lily Bush", "items": {"product": "Diaper","qty": 24}}'),
('{ "customer": "Josh William", "items": {"product": "Toy Car","qty": 1}}'),
('{ "customer": "Mary Clark", "items": {"product": "Toy Train","qty": 2}}');
Querying JSON data
JSON 데이터를 쿼리하려면 다른 기본 데이터 유형을 쿼리하는 것과 유사한 SELECT 문을 사용합니다.
SELECT info FROM orders;
PostgreSQL은 결과 집합을 JSON 형식으로 반환합니다.
PostgreSQL은 JSON 데이터를 쿼리하는 데 도움이 되는 두 가지 기본 연산자 -> 및 ->>를 제공합니다.
● 연산자 ->는 키별로 JSON 개체 필드를 반환합니다.
● 연산자 ->>는 JSON 객체 필드를 텍스트로 반환합니다.
다음 쿼리는 연산자 ->를 사용하여 모든 고객을 JSON 형식으로 가져옵니다.
SELECT info -> 'customer' AS customer
FROM orders;
그리고 다음 쿼리는 연산자 ->>를 사용하여 모든 고객을 텍스트 형태로 가져옵니다.
SELECT info ->> 'customer' AS customer
FROM orders;
-> 연산자가 JSON 개체를 반환하므로 연산자 ->>와 연결하여 특정 노드를 검색할 수 있습니다. 예를 들어, 다음 문은 판매된 모든 제품을 반환합니다.
SELECT info -> 'items' ->> 'product' as product
FROM orders
ORDER BY product;
첫 번째 정보 -> 'items'은 items을 JSON 개체로 반환합니다. 그러면 info->'items'->>'product'는 모든 제품을 텍스트로 반환합니다.
Use JSON operator in WHERE clause
전체 데이터에서 WHERE절을 이용하여 필요한 데이터를 찾아 봅시다.
WHERE 절의 JSON 연산자를 사용하여 반환되는 행을 필터링할 수 있습니다. 예를 들어, 누가 기저귀를 샀는지 확인하려면 다음 쿼리를 사용합니다.
SELECT info ->> 'customer' AS customer
FROM orders
WHERE info -> 'items' ->> 'product' = 'Diaper';
한 번에 두 개의 제품을 구입한 사용자를 확인하려면 다음 쿼리를 사용합니다.
SELECT info ->> 'customer' AS customer,
info -> 'items' ->> 'product' AS product
FROM orders
WHERE CAST ( info -> 'items' ->> 'qty' AS INTEGER) = 2 ;
CAST를 사용하여 Qty 필드를 INTER 유형으로 변환하고 2와 비교했습니다.
CAST 연산자 cast 연산자는 변수의 형태를 임시적으로 변환하는 함수입니다. 형변환 함수 |
Apply aggregate functions to JSON data
우리는 JSON 데이터에 MIN, MAX, AVERY, SUM 등의 집계 함수를 적용할 수 있습니다. 예를 들어, 다음 문구는 최소 수량, 최대 수량, 평균 수량 및 판매된 제품의 총 수량을 반환합니다.
SELECT
MIN (CAST (info -> 'items' ->> 'qty' AS INTEGER)),
MAX (CAST (info -> 'items' ->> 'qty' AS INTEGER)),
SUM (CAST (info -> 'items' ->> 'qty' AS INTEGER)),
AVG (CAST (info -> 'items' ->> 'qty' AS INTEGER))
FROM orders;
PostgreSQL JSON functions
PostgreSQL은 JSON 데이터를 처리하는 데 도움이 되는 몇 가지 기능을 제공합니다.
json_each function
json_each() 함수를 사용하면 가장 바깥쪽의 JSON 개체를 키-값 쌍 집합으로 확장할 수 있습니다. 다음 설명을 참조하십시오.
SELECT json_each (info)
FROM orders;
키-값 쌍 집합을 텍스트로 가져오려면 대신 json_each_text() 함수를 사용합니다.
SELECT json_each_text (info)
FROM orders;
json_object_keys function
가장 바깥쪽에 있는 JSON 개체의 키 집합을 가져오려면 json_object_keys() 함수를 사용합니다. 다음 쿼리는 정보 열에 있는 중첩된 항목 개체의 모든 키를 반환합니다.
SELECT json_object_keys (info->'items')
FROM orders;
json_typeof function
json_typeof() 함수는 가장 바깥쪽에 있는 JSON 값의 유형을 문자열로 반환합니다. number, boolean, null, object, array 및 string일 수 있습니다.
다음 쿼리는 항목의 데이터 유형을 반환합니다.
SELECT json_typeof (info->'items')
FROM orders;
다음 쿼리는 중첩된 항목 JSON 개체의 qty 필드의 데이터 형식을 반환합니다.
SELECT json_typeof (info->'items'->'qty')
FROM orders;
지금까지 JSON DATA TYPE과 몇가지 FUNCTION에 대해 공부했습니다.
PostgreSQL JSON 기능에 대해서 더 깊이 파고들고 싶다면,
https://www.postgresql.org/docs/
에서 메뉴얼을 다운 받아서 보기를 추천드린다.
수고하셨습니다.
Do it! SQL을 찾아 주셔서 감사합니다. 공감 ♥ , 댓글이 큰 힘이 됩니다. |
'IT > SQL 기초강좌 (PostgreSQL)' 카테고리의 다른 글
52강 SQL 초석 다지기 : PostgreSQL Array (6) | 2022.12.27 |
---|---|
51강 SQL 초석 다지기 : PostgreSQL HSTORE Data Type (4) | 2022.12.27 |
49강 SQL 초석 다지기 : PostgreSQL UUID Data Type (24) | 2022.12.25 |
48강 SQL 초석 다지기 : PostgreSQL TIME Data Type (3) | 2022.12.24 |
47강 SQL 초석 다지기 : PostgreSQL interval Data Type (6) | 2022.12.24 |
댓글