Каталог
Веб-разработка с нуля: четыре курса по порядку.
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Каталог
HTML, затем CSS, JavaScript и SQL. Каждый курс говорит, что нужно знать до него и что вы будете уметь после.
Загружаем курсы…
Урок 49 из 52 · 8 мин
Гибкие данные в столбце jsonb и сборка JSON для приложений.
У одного заказа «подарочная упаковка», у другого «позвонить заранее и оставить у двери». Столбец под каждое пожелание?
Для такого есть jsonb: гибкий объект в одном столбце. А для приложения я соберу JSON прямо из строк.
jsonbSELECT '{"wrap": "подарочная", "notes": ["позвонить заранее"], "urgent": true}'::jsonb AS wishes;-> · ->>-> возвращает поле как jsonb, ->> — как текст. wishes->'notes'->>0 — первая заметка.SELECT w->>'wrap' AS wrap, w->'notes'->>0 AS first_note, (w->>'urgent')::boolean AS urgent
FROM (SELECT '{"wrap": "подарочная", "notes": ["позвонить заранее"], "urgent": true}'::jsonb AS w) AS t;jsonb_build_objectjsonb_build_object('ключ', значение, …) — объект из пар ключ–значение.SELECT jsonb_build_object('id', id, 'name', name, 'price', price) AS item
FROM products
LIMIT 3;json_agg · jsonb_aggSELECT c.name AS category, jsonb_agg(p.name ORDER BY p.name) AS items
FROM categories c
JOIN products p ON p.category_id = c.id
GROUP BY c.name;JSON — для действительно гибких данных. Всё, по чему ищут, считают и связывают, — в обычные столбцы.
Для каждого товара в наличии выведи столбец item — объект jsonb с ключами name и price.
{name, price} для каждого товара в наличии — пока нетjsonb_build_object — пока нетcategories — категории товаровid, nameproducts — товарыid, name, category_id, price, weight_g, is_available, added_oncustomers — покупателиid, name, email, city, phone, birthday, registered_onstaff — сотрудникиid, name, role, salary, hired_on, manager_idorders — заказыid, customer_id, staff_id, created_at, statusorder_items — позиции заказовorder_id, product_id, quantity, unit_pricereviews — отзывыid, customer_id, product_id, rating, comment, created_onВыберите один ответ.
Чем ->> отличается от ->?
Выберите один ответ.
Когда уместен jsonb?
Проверяем состояние обучения…