sql_ready | Unsorted

Telegram-канал sql_ready - SQL Ready | Базы Данных

7786

Авторский канал про Базы Данных и SQL Ресурсы, гайды, задачи, шпаргалки. Информация ежедневно пополняется! Автор: @energy_it

Subscribe to a channel

SQL Ready | Базы Данных

🖥 Функции для работы с JSON в MySQL!

В этой шпаргалке собраны ключевые функции и операторы MySQL для чтения, обновления, проверки и формирования JSON-структур. Материал охватывает извлечение значений, модификацию полей, работу с объектами и массивами, а также проверку вложенных данных. Подходит для хранения метаданных, гибких профилей и других полуструктурированных данных.

➡️ SQL Ready | #шпора

Читать полностью…

SQL Ready | Базы Данных

🖥 Симуляция очереди: кто получит ресурс первым!

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

В этом посте:

Разберём, как упорядочить поток задач так, чтобы высокий приоритет перехватывал очередь;

Построим механизм, который при равных приоритетах будет соблюдать FIFO и не нарушать логику поступления задач;

Получим итоговый порядок обработки.


Техника помогает понять, как моделировать поведение планировщиков, прогнозировать задержки и анализировать нагрузку.

➡️ SQL Ready | #задача

Читать полностью…

SQL Ready | Базы Данных

SAVEPOINT: частичный откат без пересборки всей транзакции!

При работе с многошаговыми транзакциями важно уметь откатывать только часть выполненных действий. SAVEPOINT даёт такой контроль в большинстве СУБД. Пример ниже оформлен для Oracle, но принцип похож и в других диалектах.

Создаём таблицу:

CREATE TABLE operations (
id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
description VARCHAR2(200),
amount NUMBER(10,2) CHECK (amount > 0)
);


Добавляем первую операцию:
INSERT INTO operations (description, amount)
VALUES ('Initial payment', 150.00);


Фиксируем точку сохранения:
SAVEPOINT sp_step1;


Выполняем шаг, который формально корректен, но позже мы решаем его отменить (например, неверная сумма):
INSERT INTO operations (description, amount)
VALUES ('Wrong amount', 1000.00);


Понимаем, что значение было ошибочным, и откатываемся к точке сохранения, не трогая всю транзакцию целиком:
ROLLBACK TO sp_step1;


Выполняем корректную альтернативу:
INSERT INTO operations (description, amount)
VALUES ('Corrected entry', 75.00);


Фиксируем изменения и проверяем результат:
COMMIT;

SELECT * FROM operations;


🔥 Такой подход позволяет в одной транзакции безопасно откатывать только ошибочные шаги, сохраняя корректные операции.

➡️ SQL Ready | #практика

Читать полностью…

SQL Ready | Базы Данных

🖥 Индексы — ключ к быстрому SQL. Особенно полезны при большом объёме данных и частых фильтрациях!

Правильно выбранный тип и структура индекса значительно ускоряют SELECT-запросы, но могут замедлять INSERT и UPDATE. Всегда проверяй эффективность через EXPLAIN ANALYZE.

SQL Ready | #шпора

Читать полностью…

SQL Ready | Базы Данных

📂 Напоминалка для работы с индексами в базах данных!

Например, clustered index определяет физический порядок строк в таблице, а secondary index позволяет эффективно искать по неуникальным полям.

На картинке — основные типы индексов, которые должен знать каждый разработчик, чтобы уверенно работать с производительностью запросов.

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

SQL Ready | #ресурс

Читать полностью…

SQL Ready | Базы Данных

Привет. Вот тебе самые топовые каналы по IT!

⚙️ Free Znanija (IT) — Самая огромная коллекция платных курсов, которые можно скачать бесплатно;

👩‍💻 IT Books — Самая огромная библиотека книг;

💻 Hacking & InfoSec Base — Крутой блог белого хакера;

🛡 CyberGuard — Всё про ИБ;

🤔 ИБ Вакансии— Всё, чтобы найти работу в ИБ;

👩‍💻 linux administration — Всё про Линукс;

👩‍💻 Программистика — Python, python и ещё раз python;

👩‍💻 GameDev Base — Всё про GameDev;

😆 //code — Самые топовые мемы по IT:

Подпишись, чтобы не потерять!

Читать полностью…

SQL Ready | Базы Данных

🖥 Функции для работы с временными интервалами и диапазонами в MySQL!

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

➡️ SQL Ready | #шпора

Читать полностью…

SQL Ready | Базы Данных

👩‍💻 Знал ли ты, что можно открывать проекты прямо на сервере через VS Code?

Remote – SSH даёт возможность с лёгкостью получать доступ, редактировать и передавать файлы на удалённый сервер, при этом оставаясь в знакомом интерфейсе VS Code.

➡️ SQL Ready | #vscode

Читать полностью…

SQL Ready | Базы Данных

Айтишники, это вам — в телеграм есть комьюнити по каждому направлению в IT

Там есть буквально всё: чаты для общения, тонны материала(книги, курсы, ресурсы и гайды), свежие новости и конечно же мемы

Выбирайте своё направление:

💩 Frontend 🐍 Python

🐧 Linux 👩‍💻 С/С++

👩‍💻 C# 🤔 Хакинг & ИБ

📱 GitHub 🖥 SQL

👩‍💻 Сисадмин 🤟 DevOps

⚙️ Backend 🖥 Data Science

🧑‍💻 Java 🐞 Тестирование

🖥 PM / PdM 👩‍💻 GameDev

🧑‍💻 Golang 🤵‍♂️ IT-Митапы

🧑‍💻 PHP 💻 WebDev

🖥 Моб. Dev 🖥Анали.(SA&BA)

👩‍💻 Дизайн 🖥 Нейросети

💛 1C 🤓 Книги IT

➡️ Сохраняйте в закладки

Читать полностью…

SQL Ready | Базы Данных

💅 SQLTutorial — шпаргалка, которая реально пригодиться!

Хочешь быстро вспомнить команды для запросов, объединений таблиц или операций с данными? На этом сайте найдёшь множество готовых подсказок. Отлично подойдёт, если учишь SQL, готовишься к собесу или просто не хочешь каждый раз гуглить синтаксис.

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

➡️ SQL Ready | #ресурс

Читать полностью…

SQL Ready | Базы Данных

🖥 Функции для работы с датой и временем в MySQL!

В этой шпаргалке собраны функции MySQL, применяемые для получения отдельных компонентов даты и времени: года, месяца, дня, часов, минут, секунд, номера недели и дня недели. Эти операции используются в большинстве рабочих запросов — от фильтрации и группировки данных до подготовки отчётов и временной аналитики.

➡️ SQL Ready | #шпора

Читать полностью…

SQL Ready | Базы Данных

Нужно получить список всех дней, даже тех, которых нет в таблице?

Например, показать дни без заказов. PostgreSQL умеет генерировать последовательности прямо в запросе:

SELECT * 
FROM generate_series('2025-01-01', '2025-01-31', interval '1 day');


generate_series() создаёт виртуальную таблицу с шагом по дате.
Никаких временных таблиц, никаких циклов.

Теперь можно объединить это с данными:
SELECT g.day, COUNT(o.id) AS total
FROM generate_series('2025-01-01', '2025-01-31', interval '1 day') AS g(day)
LEFT JOIN orders o ON date(o.created_at) = g.day
GROUP BY g.day
ORDER BY g.day;


🔥 Пригодится для аналитики временных рядов,
заполнения пропусков и построения отчётов!

➡️ SQL Ready | #совет

Читать полностью…

SQL Ready | Базы Данных

— Ты уволен
— Почему?
— Мы оплатили GPT-5, ты больше не нужен.


Вы тоже в ах@е с такого расклада? Учился лет 5, потом столько же батрачил за копейки ради опыта — чтобы тебя заменила еб@чая железяка.

А теперь задумайтес
ь: нейронки развиваются с бешеной скоростью. Поэтому сейчас как никогда нужны спецы для их обучения.

Чтобы в кратчайшие сроки выйти на уровень элиты и стать топом в сфере — подпишитесь на канал @devsp. Его автор раскрывает неочевидные секреты: как в 3 месяца уместить 6 лет обучения, достойно пройти любое собеседование и что делать, чтобы лучшие компании дрались за вас.

А временами подкидывает крутые вакансии и лайфхаки, после которых вас с руками оторвут даже без опыта.

Это всё равно что встретить Нео и войти в 10% тех, кто сломал систему. Подписывайтесь: @devsp

Читать полностью…

SQL Ready | Базы Данных

🖥 Очередь без конфликтов!

SKIP LOCKED позволяет управлять конкурентным доступом на уровне строки, а не всей таблицы, поэтому воркеры не ждут друг друга и не создают лишних блокировок.

Сегодня в гайде:

 Забираем задачи параллельно и без конфликтов;

 Делаем атомарный “взять + обновить” в одном запросе;

 Распределяем очереди между воркерами под высокой нагрузкой.


Этот прием делает обработку задач масштабируемой даже при высоком параллелизме.

➡️ SQL Ready | #гайд

Читать полностью…

SQL Ready | Базы Данных

👩‍💻 ChatGPT – умер!

Власти начали регулирование, и ИИ больше не заменит программистов.

Хочешь реально уметь программировать, а не копировать код?

Выбирай своё направление и учись по карточкам и фото,
а не по сухим текстам
.

👩‍💻 Python Flow — @pythonn_flow
👩‍💻 C & C++ Flow — @cpp_flow
💻 IT News Flow — @itnews_flow
👩‍💻 Java Flow — @java_flow
👩‍💻 SQL & Базы данных Flow — @sql_flow
👩‍💻 C# & Unity Flow — @csharp_flow
👩‍💻 Node.js Flow — @nodejs_flow
👩‍💻 Linux & DevOps Flow — @linux_flow
👩‍💻 InfoSec & Хакинг — @hacking_flow
👩‍💻 Git & GitHub Flow — @git_flow

💎 Присоединяйся к тем кто реально думает и растёт, а не ждёт чуда!

Читать полностью…

SQL Ready | Базы Данных

Хотите найти дубликаты по нескольким полям и оставить только самые свежие или правильные записи?

Используйте оконную функцию ROW_NUMBER() по ключам,
которые должны быть уникальны:

ROW_NUMBER() OVER (
PARTITION BY email, phone
ORDER BY updated_at DESC
)


Первая строка в группе (dup_rank = 1) - оригинал.
Все остальные - реальные дубликаты, которые можно чистить.

Чтобы увидеть только те строки, которые должны быть удалены:
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (
PARTITION BY email, phone ORDER BY updated_at DESC
) AS dup_rank
FROM users
) t
WHERE dup_rank > 1;


🔥 Подходит для очистки данных, поиска дубликатов, контроля миграций и проверки внешних интеграций.

➡️ SQL Ready | #совет

Читать полностью…

SQL Ready | Базы Данных

👨👨👨👨👨👨👨👨👨👨

Каналы с Junior IT вакансиями
и стажировками

Подписывайся и забирай свой оффер 🤘

1. Стажировки и вакансии по России и миру
2. IT вакансии по СНГ
3. IT стажировки по СНГ
4. ИИ-ассистент для автооткликов
5. IT стажировки и волонтерства
6. IT стажировки в топовых компаниях мира
7. Удалённые IT вакансии и стажировки
8. Python вакансии и стажировки
9. БИГТЕХ вакансии и стажировки
10. Design вакансии и стажировки
11. QA вакансии и стажировки
12. Junior вакансии и стажировки
13. Frontend вакансии и вопросы собесов
14. Вакансии и стажировки для аналитиков
15. Вакансии в русских стартапах за границей
16. Вакансии и стажировки для DevOps
17. Вакансии, которых нет на ХХ.РУ

Читать полностью…

SQL Ready | Базы Данных

Миграция с MS SQL, Oracle и PostgreSQL проходит почти сама собой – возможно ли это? 🤔

📍Короткий ответ: Да.
Диасофт обновил свою СУБД Digital Q.DataBase, чтобы компании кардинально снижали сложность, сроки и стоимость импортозамещения в инфраструктуре баз данных 📉

Организации теперь могут проводить перенос данных и хранимой логики на российскую СУБД с сохранением существующих бизнес-процессов и с минимальными операционными рисками.

Это стало возможным благодаря обновлению "Полиглот" 🗣

Оно обеспечивает исполнение запросов, написанных на диалектах SQL ведущих зарубежных СУБД: Oracle, Microsoft SQL Server и PostgreSQL.

Подробно об этом расскажет спикер Диасофт на вебинаре 25 ноября.

🔗 Регистрируйтесь по ссылке!

Реклама. ООО "ДИАСОФТ ЭКОСИСТЕМА". ИНН 9715403607.

Читать полностью…

SQL Ready | Базы Данных

Удаляйте ChatGPT. Вы не умеете им пользоваться.

Большинство пользователей спамит в ИИ всякую чушь — просят рассказать анекдот, изливают душу и используют как Гугл.

Российский тимлид OpenAI Вадим Петрич рассказывает в «Доктор GPT» как извлекать из нейронок максимум пользы. Это очень интересно:

• ТОП №1 нейросеть, генерирующая видео без цензуры вообще
• Готовые промты на все случаи жизни
• Инсайды и разработки от китов индустрии

Подпишитесь, с Доктором GPT нейронки станут инструментом роста, а не безделушкой:
/channel/+5CgWzXmpgdhlMGEy

Читать полностью…

SQL Ready | Базы Данных

🖥 MVCC — что реально происходит при UPDATE!

MVCC объясняет, почему строки в базе не перезаписываются, а накапливают версии и почему таблица может расти, даже если количество записей не изменилось.

Сегодня в гайде:

Как возникают версии строк при UPDATE;

Почему длинные транзакции удерживают старые данные;

Откуда появляется bloat и как он влияет на индексы.


Эта механика напрямую влияет на производительность, видимость данных и работу VACUUM под нагрузкой.

📣 SQL Ready | #гайд

Читать полностью…

SQL Ready | Базы Данных

Нужно сделать очередь задач, чтобы несколько воркеров могли брать задания параллельно?

FOR UPDATE SKIP LOCKED — флаг, который позволяет захватить строку, а занятые другими процессами — пропустить, не ожидая их.

SELECT id
FROM jobs
WHERE taken_at IS NULL
ORDER BY created_at
FOR UPDATE SKIP LOCKED
LIMIT 1;


Сделаем атомарный захват задачи:
UPDATE jobs
SET taken_at = now()
WHERE id = ( ... тот самый SELECT ... )
RETURNING *;


Если задача взята, она возвращается. Если другой воркер схватил её раньше — SELECT просто пропустит её.

Можно добавить таймаут на незавершённые задачи:
WHERE taken_at IS NULL
OR taken_at < now() - interval '5 minutes'


🔥 Это превращает таблицу в настоящую надёжную очередь.

➡️ SQL Ready | #совет

Читать полностью…

SQL Ready | Базы Данных

🔄 Миграция на российскую СУБД без переписывания кода

25 ноября в 14:00 (МСК) — вебинар о переходе с MS SQL или Oracle на Digital Q.DataBase с минимальными издержками.

💡 На вебинаре узнаете:
1️⃣ Как Digital Q.DataBase объединила три диалекта — T-SQL, PL/SQL и PL/pgSQL.
2️⃣ Как мигрировать ПО с любой СУБД без переписывания кода.
3️⃣ Что входит в поставку (включая то, что другие вендоры лицензируют отдельно).
4️⃣ Как получить бесплатную версию Digital Q.DataBase.

🏆 Digital Q.DataBase:
— Сертификация ФСТЭК 4-го уровня
— 1 место в рейтинге CNews Market «Конвергентные СУБД»

👥 Для кого:
Разработчики, администраторы БД, CIO, CDTO, руководители проектов импортозамещения.

🎤 Спикер: Андрей Жуйков, руководитель направления

📅 25 ноября | 🕐 14:00 (МСК) | 💻 Онлайн, бесплатно

👉 Регистрация

#реклама
О рекламодателе

Читать полностью…

SQL Ready | Базы Данных

🖥 Генерация данных прямо в базе!

GENERATE_SERIES превращает PostgreSQL в гибкий источник диапазонов: дат, чисел, временных интервалов без таблиц и вспомогательных скриптов.

В сегодняшнем гайде:

Строим календарь напрямую в запросе;

Закрываем пропуски в отчётах и логах;

Генерируем тестовые данные и последовательности для расчётов;

Создаём временные ряды и интервалы.


Приём, который экономит время, упрощает аналитику и делает запросы выразительнее.

➡️ SQL Ready | #гайд

Читать полностью…

SQL Ready | Базы Данных

Производительные или и выгодные базы данных в облаке

Безопасные, масштабируемые и отказоустойчивые базы данных — одна из ключевых потребностей любого проекта. Именно такие предлагает Selectel. СУБД под разные запросы: от универсальной PostgreSQL до поисковой и аналитической БД Opensearch

Новые клиенты сейчас могут получить до 30 000 бонусов на использование облачных баз данных Selectel. Провайдер гарантирует:

🔹Высокую производительность. Выбирайте оптимальную конфигурацию кластера на базе мощного железа и локальных NVMe-дисков.
🔹Надежность. Автоматические бесплатные бэкапы с восстановлением вплоть до секунды — на стороне Selectel. А создать отказоустойчивый кластер можно всего от двух нод и сэкономить до 33%.
🔹Гибкое масштабирование. При росте нагрузки можно поменять конфигурацию облачного сервера и количество реплик без простоя.

Успейте зарегистрироваться и оставить заявку на участие в акции, чтобы протестировать сервис бесплатно: https://slc.tl/qt6tv

Реклама. АО "Селектел". erid:2W5zFHAWMma

Читать полностью…

SQL Ready | Базы Данных

UNNEST + WITH ORDINALITY — управляемая распаковка массивов в PostgreSQL!

Обычный UNNEST() не сохраняет позицию элемента, что критично, когда важен порядок: восстановление списков, сортировка, работа с JSON-массивами.

В PostgreSQL есть решение — WITH ORDINALITY. Оно добавляет индекс элемента прямо при распаковке.

Пример: распакуем массив ингредиентов с сохранением порядка:

SELECT recipe_id, ingredient, ord
FROM recipes,
UNNEST(ingredients) WITH ORDINALITY AS t(ingredient, ord);


В отличие от обычного UNNEST(), здесь мы сразу получаем порядковый номер — без оконных функций и без дополнительных JOIN.

Соберём обратно отсортированный список:
SELECT recipe_id,
STRING_AGG(ingredient, ', ' ORDER BY ord) AS ordered_list
FROM (
SELECT recipe_id, ingredient, ord
FROM recipes,
UNNEST(ingredients) WITH ORDINALITY t(ingredient, ord)
) q
GROUP BY recipe_id;


Работа с JSON-массивами:
SELECT order_id,
item ->> 'name' AS name,
item ->> 'price' AS price,
ord
FROM orders,
jsonb_array_elements(items) WITH ORDINALITY AS t(item, ord);


🔥 Используйте WITH ORDINALITY в PostgreSQL, когда критична позиция элемента в массиве или JSON-списке.

➡️ SQL Ready | #практика

Читать полностью…

SQL Ready | Базы Данных

⚡️ Программисты из CodeGuard слили в телеграмм тонны инфы

🔥 Отсортировали и разбили по каналам:

|- - -
📂 Python — 428ГБ
|
|- - -
📂 Хакинг & infosec — 573ГБ
|
|- - -
📂 Linux & Bash — 652ГБ
|
|- - -
📂 Работа IT — 356ГБ
|
|- - -
📂 Общее IT — 1526ГБ

📌 Гайды, шпаргалки, книги, задачи и ресурсы для каждого.

Читать полностью…

SQL Ready | Базы Данных

🖥 Находим маршруты с пересадками (мини-навигация в базе)

Соберём все возможные маршруты из аэропорта A в B — прямые, через одну пересадку и через две, без рекурсий и сложных конструкций.

В этом посте:

Проверим, существует ли прямой путь, простой случай, но часто самый важный;

Расширим поиск и найдём маршруты вида A => X => B, где X — автоматически вычисленная пересадка;

Построим цепочки A => X => Y => B, что по сути является маленьким обходом графа.


Это базовая техника работы с графами, подходит для поиска зависимостей, цепочек действий и любых последовательностей.

➡️ SQL Ready | #задача

Читать полностью…

SQL Ready | Базы Данных

Сгенерированные колонки в PostgreSQL: ускоряем фильтры без лишних вычислений!

Когда одно и то же выражение постоянно считается в WHERE, запросы тормозят. В PostgreSQL это решается GENERATED ALWAYS AS … STORED — выражение вычисляется один раз и хранится как обычное поле.

Создаём таблицу с материализованным выражением:

CREATE TABLE events (
id BIGSERIAL PRIMARY KEY,
payload JSONB NOT NULL,
event_type TEXT GENERATED ALWAYS AS (payload->>'type') STORED
);


Теперь event_type больше не вычисляется на лету — значение лежит прямо в строке.

Фильтрация становится проще и быстрее:
SELECT id
FROM events
WHERE event_type = 'purchase';


Добавляем индекс:
CREATE INDEX idx_events_event_type
ON events(event_type);


Проверяем:
EXPLAIN ANALYZE
SELECT id
FROM events
WHERE event_type = 'purchase';


🔥 Должен быть Index Scan, без тяжёлых операций над JSONB. Сгенерированные колонки отлично подходят для повторяющихся вычислений:

➡️ SQL Ready | #практика

Читать полностью…

SQL Ready | Базы Данных

🖥 Oracle — псевдоколонки и их возможности!

Эта шпаргалка собирает основные псевдоколонки Oracle и показывает, как использовать их на практике: нумерация строк, доступ к физическому адресу, работа с иерархиями, определение листовых/корневых узлов, генерация UUID, отслеживание изменений по SCN и просмотр историй строк.

➡️ SQL Ready | #шпора

Читать полностью…

SQL Ready | Базы Данных

Нужно найти, где бронирования, подписки или сессии пересекаются по времени?

Два интервала пересекаются, если начало одного раньше конца другого, и наоборот:

a.start_at < b.end_at
AND b.start_at < a.end_at


Это условие покрывает все случаи перекрытий, даже частичных и вложенных.

Теперь объедини данные сами с собой:
SELECT a.id, b.id
FROM bookings a
JOIN bookings b
ON a.id < b.id
AND a.start_at < b.end_at
AND b.start_at < a.end_at;


a.id < b.id, чтобы не получить пары в обе стороны.

Хочешь анализировать бронирования по ресурсу? Добавь фильтр:
AND a.room_id = b.room_id


🔥 Теперь видно, какие заявки реально конфликтуют по времени.

➡️ SQL Ready | #совет

Читать полностью…
Subscribe to a channel