教你在PostgreSql中使用JSON字段的方法
通過本文可掌握在pg數(shù)據(jù)庫中如何正確使用json字段,如何進(jìn)行數(shù)據(jù)查詢,在where子查詢中如何使用,以及對json值進(jìn)行聚合查詢使用.
概述
JSON 代表 JavaScript Object Notation。JSON是開放的標(biāo)準(zhǔn)格式,由key-value對組成。JSON的主要用于在服務(wù)器與web應(yīng)用之間傳輸數(shù)據(jù)。新建表如下:
CREATE TABLE "public"."biz_orders" ( "ID" int8 NOT NULL DEFAULT nextval('"biz_orders_ID_seq"'::regclass),
"info" json NOT NULL
);表初始化語句:
INSERT INTO "biz_orders"("ID", "info") VALUES (1, '{"name":"張三","items":{"product":"啤酒","qty":6}}');
INSERT INTO "biz_orders"("ID", "info") VALUES (2, '{"name":"李四","items":{"product":"辣條","qty":8}}');
INSERT INTO "biz_orders"("ID", "info") VALUES (3, '{"name":"王五","items":{"product":"蘋果","qty":18}}');
INSERT INTO "biz_orders"("ID", "info") VALUES (4, '{"name":"趙一","items":{"product":"香蕉","qty":20}}');使用
1、簡單查詢
select * from biz_orders;

2、查詢使用->操作符,查詢json中所有顧客作為鍵
SELECT info -> 'name' AS customer FROM biz_orders;

3、下面使用->>操作獲取所有顧客姓名作為值
SELECT info ->> 'name' AS customer FROM biz_orders;

4、根據(jù)json對象的key查詢值
SELECT info -> 'items' ->> 'product' as product FROM biz_orders ORDER BY product;

5、where查詢中使用json字段
SELECT info ->> 'name' AS customer FROM biz_orders WHERE info -> 'items' ->> 'product' = '辣條'

6、case 查詢???????
SELECT
info ->> 'name' AS customer,
info -> 'items' ->> 'product' AS product
FROM
biz_orders
WHERE
CAST (
info -> 'items' ->> 'qty' AS INTEGER
) = 67、聚合函數(shù)???????
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 biz_orders;

8、類型查詢???????
SELECT json_typeof ( info -> 'items' -> 'qty' ) FROM biz_orders;

總結(jié)
通過以上例子,知道在pg數(shù)據(jù)庫中如何存儲json數(shù)據(jù),并且掌握基本的查詢,在查詢條件中使用json,在聚合函數(shù)中使用。雖然,關(guān)系型數(shù)據(jù)庫的強項不是在于json處理,而MongoDb或者Redis等NoSQL更適合做這類處理,但是在不引入一個新數(shù)據(jù)存儲的情況下,利用現(xiàn)有架構(gòu)解決生產(chǎn)問題。隨著pg甚至mysql不斷向前發(fā)展,相信未來對于json等數(shù)據(jù)支持會越來越好,性能也會越來越高。
到此這篇關(guān)于干貨教你在PostgreSql中使用JSON字段的文章就介紹到這了,更多相關(guān)PostgreSql使用JSON字段內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
postgreSQL 使用timestamp轉(zhuǎn)成date格式
這篇文章主要介紹了postgreSQL 使用timestamp轉(zhuǎn)成date格式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
如何在PostgreSQL中創(chuàng)建只讀權(quán)限和讀寫權(quán)限的賬號
一個良好的賬號管理策略對于數(shù)據(jù)庫的安全和數(shù)據(jù)的完整性至關(guān)重要,通過為不同的用戶設(shè)置適當(dāng)?shù)臋?quán)限,可以確保他們只能訪問他們需要的數(shù)據(jù),并防止對敏感數(shù)據(jù)的意外或惡意訪問,本文介紹在 PostgreSQL中創(chuàng)建只讀權(quán)限和讀寫權(quán)限的賬號的步驟和方法,感興趣的朋友一起看看吧2023-08-08
Postgresql設(shè)置遠(yuǎn)程訪問的方法(需要設(shè)置防火墻或者關(guān)閉防火墻)
這篇文章主要介紹了Postgresql設(shè)置遠(yuǎn)程訪問的方法(需要設(shè)置防火墻或者關(guān)閉防火墻),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
postgresql 賦權(quán)語句 grant的正確使用說明
這篇文章主要介紹了postgresql 賦權(quán)語句 grant的正確使用說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
PostgreSQL 序列綁定字段與不綁定字段的區(qū)別說明
這篇文章主要介紹了PostgreSQL 序列綁定字段與不綁定字段的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02

