
<aside> 💡 Ushbu qo'llanmada PostgreSQLda JSON ma'lumotlar turi bilan ishlashni va JSON ma'lumotlarni boshqarish uchun ba'zi foydali operatorlar va funksiyalarni bilib olasiz.
</aside>
<aside> 💡 JSON - bu kalit-qiymat juftliklaridan tashkil topgan ochiq standart format
</aside>

**Keys | Values**
{
"name": "Sardor",
"age" : 18,
"car" : "Tiko"
}
Misollar bilan ko'rsatish uchun yangi jadval hosil qilamiz.
"orders" nomli jadval hosil qilamiz va bitta ustuni tipini "json" qilamiz.
Ushbu ustunda "json" turidagi ma'lumot saqlaymiz.
CREATE TABLE orders (
id serial NOT NULL PRIMARY KEY,
info json NOT NULL
);
Jadvalga ma'lumotlar qo'shamiz
JSON:
{
"customer": "Sardor Oga",
"items": {
"product": "iphone",
"qty": 1
}
}
SQL:
INSERT INTO orders (info)
VALUES('{ "customer": "Sardor Oga", "items": {"product": "iphone","qty": 1}}');
Bir nechta ma`lumotni bitta so`rovda qo`shish:
INSERT INTO orders (info)
VALUES('{ "customer": "Toshmat", "items": {"product": "iMac","qty": 1}}'),
('{ "customer": "Apandi", "items": {"product": "Eshak","qty": 2}}'),
('{ "customer": "Eshmat", "items": {"product": "Chupa-chups","qty": 20}}');
Bazaga SELECT so'rovini berib, kerakli ma'lumotlarni olamiz
SELECT info FROM orders;

PostgreSQLning -> and ->> operatorlari, JSON turidagi ma'lulmotlarni olishda yordam beradi.
"orders" jadvalidan, barcha customerlarni olish so`rovi:
SELECT info ->> 'customer' AS customer
FROM orders;
SELECT info -> 'items' AS customer
FROM orders;
->> - natijani string turida qaytaradi
-> - natijani json obyekt qaytaradi
"orders" jadvalidan barcha order qilingan produktlarning nomlarini olish
SELECT info -> 'items' ->> 'product' as product
FROM orders
ORDER BY product;
Izoh:
info -> 'items' ->> 'product' - nega aynan bunday ishlatildi?
* info - ustun nomi;
* uning "items" keyli json obyektdan tashkil topgan elementi mavjud;
* info->'items' bu yerda ->> bu operatorni qo`llab bo`lmaydi,
chunki "items" json obyekt, bizga shu json obyektni ichidagi
"product" keyli elementini qiymati kerak;
* agar info->>'items' operator bilan oladigan bo`lsak, bizga string qilib
qaytaradi, stringni ichidagi "product" ni ajratib bo`lmaydi.
Shuning uchun -> ishlatiladi
Demka:
Birinchi, info -> 'items' barcha 'items' larni JSON obyekt qilib qaytaradi.
info->'items'->>'product' - barcha produktlarni text ko'rinishida qaytaradi.

WHERE ichida qanday ishlatiladi?