SQL Ready | Базы Данных
10.4K subscribers
659 photos
28 videos
2 files
330 links
Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

Реклама на бирже: https://telega.in/c/sql_ready
加入频道
🖥 Рассмотрим полезные запросы для работы с JSON.

JSON — это гибкий формат, который отлично подходит для хранения вложенных структур прямо в базе данных. Современные СУБД поддерживают разнообразные функции для работы с JSON: можно извлекать отдельные значения, фильтровать по ним, разворачивать массивы и объекты.

➡️ SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍75
SELECT FOR UPDATE SKIP LOCKED — распределяем задачи без гонок!

Иногда нужно, чтобы несколько воркеров одновременно обрабатывали очередь задач, не мешая друг другу. Чтобы избежать гонок и блокировок, используется SELECT … FOR UPDATE SKIP LOCKED.

Представим, что у нас есть таблица задач:
SELECT id, status 
FROM tasks
WHERE status = 'pending';


Если несколько процессов попытаются взять одну и ту же задачу — возможна гонка или блокировка.

Используем безопасный способ:
BEGIN;
SELECT id
FROM tasks
WHERE status = 'pending'
FOR UPDATE SKIP LOCKED
LIMIT 1;
-- UPDATE tasks SET status = 'processing' WHERE id = …
COMMIT;


🔥 Каждый воркер получает только одну *свободную* задачу. Если задача уже заблокирована другим процессом — она просто пропускается.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍7🔥5
📂 Напоминалка по HTTP-статусам!

Например, код 200 означает, что всё прошло успешно, а 404 сообщает, что страница не найдена.
Очень полезно держать под рукой, когда работаешь с API или отлаживаешь backend.

На картинке показаны самые часто используемые статусы от 100 до 599.

Сохрани, чтобы не забыть!

➡️ SQL Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍139🔥5
🖥 JSONB для быстрого поиска и удобного хранения!

Создаем таблицу для централизованного хранения метаданных изображений с помощью JSONB. Операции JSONB занимают значительно меньше времени, чем операции с JSON, полезно знать, что это такое.

В этом гайде:
• Создаем таблицу метаданных — разрабатываем структуру и связываем с таблицей изображений.

INSERT JSONB-метаданных — продумываем вставку метаданных при загрузке изображений.

SELECT JSONB-метаданных — рассматриваем методы выборки и фильтрации JSONB-элементов.


🔥 — если узнал что-то новое
🤝 если уже пользовался


SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥137👍4🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
❤️ SQLCourse — классный сайт для тех, кто хочет подружиться с SQL.

Простой, понятный и без лишнего шума — сайт предлагает мини-уроки с живыми примерами, которые можно сразу же опробовать в онлайн-редакторе. Никаких установок и лишних шагов — всё обучение происходит в браузере.

📌 Оставляю ссылочку: sqlcourse.com

➡️ SQL Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍6🔥5
🖥 Кто тратит больше всех?

Сегодня разбираем SQL-задачу: как найти заказы, сумма которых превышает среднюю по всем заказам.

Ключевые моменты:

Вычисляем среднюю сумму заказов с помощью SELECT AVG(...).

Сравниваем каждую строку с этим средним значением в WHERE

Возвращаем только интересные заказы: order_id, customer_id, total_amount.


Подходит как для новичков, так и для тех, кто хочет отточить работу с подзапросами.

SQL Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
13🔥9👍7
🤓 Напоминалка для работы с Git.

Например, git push отправляет твои изменения на сервер, а git checkout позволяет быстро переключаться между ветками.

На картинке — 12 самых нужных команд, которые стоит держать под рукой.

Сохрани, чтобы не забыть!

➡️ SQL Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
👍87🔥7
WINDOW FUNCTIONS — сравниваем строки без джойнов!

Когда нужно показать, как изменилась цена по сравнению со вчерашним днём — часто пишут JOIN таблицы самой с собой. Но это сложно, медленно и плохо масштабируется при работе с большими таблицами.

Вместо этого используем оконную функцию LAG() — она возвращает значение из предыдущей строки:
SELECT
date,
price AS today,
LAG(price) OVER (
PARTITION BY product_id
ORDER BY date
) AS yesterday
FROM prices
WHERE product_id = 42;


Один проход по таблице, без соединений. План часто использует Index Only Scan, особенно при хороших индексах. Это делает запросы заметно быстрее и эффективнее.

Нужен топ-3 товаров по продажам в каждой категории? Используем ROW_NUMBER():
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY category
ORDER BY sales DESC
) AS rn
FROM products
) AS ranked
WHERE rn <= 3;


🔥 Не забывайте ORDER BY внутри окна — он определяет порядок, по которому сравниваются строки. Без него результаты могут быть непредсказуемыми.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍6🔥5👎1
5👍4👎1🔥1