SQL Portal | Базы Данных
13.9K subscribers
992 photos
137 videos
51 files
752 links
Присоединяйтесь к нашему каналу и погрузитесь в мир баз данных

Связь: @devmangx

РКН: https://clck.ru/3H4Wo3
Download Telegram
PostgreSQL 19 получил поддержку графовых запросов

В PostgreSQL 19 появилась возможность выполнять графовые запросы, позволяющие описывать связи между данными как последовательность отношений, а не строить длинные цепочки JOIN.

Вместо множества соединений таблиц можно описать путь через данные, например:
Клиент → купил → товар ← купил ← похожий клиент → подписан на → бренд


Такой подход делает сложные запросы более понятными и приближает PostgreSQL к возможностям специализированных графовых СУБД.

Где это может пригодиться?

Рекомендательные системы — поиск пользователей с похожими интересами и рекомендация товаров.
Контроль доступа — анализ цепочек ролей, групп и разрешений.
Выявление мошенничества — поиск подозрительных связей между пользователями, устройствами, платежами и аккаунтами.
Графы знаний (Knowledge Graphs) — моделирование сложных взаимосвязей между сущностями.
AI и LLM — предоставление языковым моделям дополнительного контекста за счёт анализа связанных данных.

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
В копилку тренажёров: годный онлайн-тренажёр для SQL-запросов. Простой интерфейс, все задачи бесплатные, есть теоретические разделы, регистрация по желанию

Ещё и на русском, забираем 😋

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
SQL JOIN простым языком

Представьте, что вам объясняет старший коллега.

INNER JOIN — возвращает только совпадающие записи из обеих таблиц. Это самый простой и безопасный вариант соединения.

LEFT JOIN — возвращает все записи из левой таблицы и совпадающие записи из правой.

Если совпадений нет, данные из правой таблицы будут иметь значение NULL.

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Платформа для практики программирования, более 7000 упражнений

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

А если застрял, можно получить обратную связь от опытных менторов — не всегда сразу, но всегда по делу ✌️

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3🤯1
Gridex - современная AI-native IDE для работы с базами данных

Поддерживает PostgreSQL, MySQL, SQLite, Redis, MongoDB, SQL Server и ClickHouse, включает встроенный AI-чат (Claude, GPT, Gemini, Ollama), MCP-сервер для AI-агентов, ER-диаграммы, редактор запросов и инструменты анализа схем.

Работает нативно на macOS, Windows и Linux - без Electron и Java. Интересная альтернатива TablePlus, DBeaver и DataGrip для тех, кто активно использует SQL и AI в ежедневной работе.

https://github.com/gridex/gridex

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍1
Запуск open-source платформы PostgreSQL в Kubernetes с использованием copy-on-write для ветвления данных объёмом в терабайты за считанные секунды и автоматической гибернацией при простое для экономии ресурсов — подходит для компаний, которые строят внутренние базы данных или быстро поднимают окружения для разработки и тестирования.

Xata — это open-source облачная платформа PostgreSQL, которая умеет одновременно управлять большим количеством инстансов Postgres в Kubernetes. Ключевые возможности: создание веток данных объёмом в терабайты за секунды и автоматическое масштабирование до нуля при простое с последующим пробуждением при новых подключениях.

На уровне инфраструктуры используется CloudNativePG для управления и обслуживания Postgres и OpenEBS для хранения, а на верхнем уровне доступны встроенные SQL-шлюз, управление ветками, REST API и CLI. Компании могут использовать её для построения внутренних платформ баз данных или быстро выделять отдельную копию данных для каждого разработчика и каждого тестового запуска с последующей автоматической гибернацией для экономии ресурсов и затрат.

100% опенсорс

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
SQL-совет, который избавит начинающих от множества ошибок

Многие новички путают WHERE и HAVING.
Запомните простое правило:

WHERE фильтрует отдельные строки.
HAVING фильтрует уже сгруппированные результаты.

Пример
WHERE salary > 50000


Отбирает строки до выполнения группировки.
HAVING COUNT(*) > 5


Отбирает группы после выполнения GROUP BY.
Запомните порядок выполнения SQL-запроса
WHERE → GROUP BY → HAVING


Или проще:
WHEREсначала;
GROUP BYгруппировка;
HAVINGпосле группировки.

Если SQL кажется сложным, проблема чаще всего не в самом запросе, а в непонимании порядка его выполнения.

Освойте этот принцип один раз — и работа с JOIN, агрегатными функциями и аналитическими отчётами станет намного понятнее.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
PortSwigger выкатили огромную базу знаний по веб-безопасности

Не просто статьи, а полноценный хаб по уязвимостям: XSS, SQL-инъекции, CSRF, баги в аутентификации, API и многое другое. Всё удобно разложено по темам и уровням сложности

Плюс к каждой теме идут практические лаборатории, где можно на практике разобраться, как работают уязвимости 🚨

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
4 сайта, которые помогут прокачать SQL через практику

Если обычные упражнения уже наскучили, попробуйте изучать SQL в игровом формате.

SQL Murder Mystery
https://mystery.knightlab.com

Расследуйте убийство, используя SQL-запросы для поиска улик и подозреваемых.

SQLBolt
https://sqlbolt.com

Один из лучших интерактивных курсов для новичков с теорией и практическими заданиями.

SQLZoo
https://sqlzoo.net

Большая коллекция уроков и задач по SQL с проверкой решений прямо в браузере.

Select Star SQL
https://selectstarsql.com

Обучение SQL в формате интерактивной игры с постепенным усложнением заданий.

Лучший способ освоить SQL — как можно больше практиковаться. Попробуйте один из этих сервисов уже сегодня и превратите обучение в игру.
4
5 причин использовать Common Table Expressions (CTE)

CTE (Common Table Expressions) делают сложные SQL-запросы более понятными, удобными в сопровождении и отладке.

1. Разбивают сложную логику на понятные этапы:

Каждому этапу можно дать осмысленное имя, благодаря чему запрос становится гораздо легче читать.

2. Упрощают отладку:

Если в запросе возникла ошибка, каждое CTE можно проверить отдельно, не анализируя весь SQL целиком.

3. Позволяют повторно использовать результат:

Описав CTE один раз, вы можете обращаться к нему дальше в запросе, не дублируя одну и ту же логику.

4. Лучше подходят для сложных запросов:

По мере роста логики несколько CTE гораздо легче поддерживать, чем один огромный SQL-запрос с множеством вложенных подзапросов.

5. Делают запросы более естественными для чтения:

Каждый CTE представляет собой отдельный логический шаг, поэтому запрос читается примерно так же, как если бы вы объясняли решение другому человеку. Это значительно упрощает написание, ревью и сопровождение SQL-кода.

CTE — один из самых полезных инструментов SQL. Освоив их, вы сможете писать более читаемые, структурированные и поддерживаемые запросы.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2
SQL-совет: ORDER BY по нескольким столбцам

При использовании ORDER BY с несколькими столбцами база данных сначала сортирует весь результат по первому указанному столбцу (в данном примере — sales).

В результате образуются группы строк с одинаковыми значениями. Например, Mira и Bob оказываются в одной группе, потому что у обоих значение sales равно 12 000.

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

Поскольку второй столбец — age, а сортировка выполняется по возрастанию (ASC), сначала будет выведена Mira (30 лет), а затем Bob.

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

Что если совпадают значения и во втором столбце? Если одинаковыми оказываются значения и второго столбца, всё зависит от конкретной СУБД. Некоторые базы данных, особенно при работе с небольшими наборами данных, могут сохранить порядок вставки записей как дополнительный критерий сортировки.

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

Совет: если вам важен полностью предсказуемый порядок результатов, всегда добавляйте в ORDER BY дополнительный столбец с уникальными значениями (например, id). Это обеспечит стабильную и воспроизводимую сортировку.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍2
Настоящая библия разработчика «Codecademy Cheatsheets»

Самая большая библиотека шпаргалок что я когда либо встречал — PDF и онлайн чек-листы по Python, JS, SQL, Bash, DevOps, ML, security и множеству других тем

Ваш помощник на собеседованиях или при кодинге. За такое можно и лайк поставить ❤️

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74
SQL-совет: функция NULLIF()

Функция NULLIF() сравнивает два выражения.
Если они равны, функция возвращает NULL.
Если не равны, возвращается первое выражение.

Пример
SELECT NULLIF(10, 10);


Результат:
NULL


Поскольку оба значения одинаковые, NULLIF() возвращает NULL.

Функция особенно полезна, когда нужно избежать ошибки деления на ноль или заменить определённое значение на NULL для дальнейшей обработки.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42
Подборка SQL-запросов для быстрой диагностики PostgreSQL, которые помогают обнаружить проблемы ещё до того, как они перерастут в серьёзные сбои.

В статье собраны готовые запросы для поиска «мёртвых» строк, самых затратных SQL-запросов, таблиц с частыми Seq Scan, неиспользуемых индексов, зависших транзакций и блокировок, а также для оценки эффективности кэша PostgreSQL.

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
SQL-совет: ORDER BY может учитывать регистр

Многие считают, что сортировка текста в SQL всегда происходит просто — от A до Z. Но это не всегда так.

В зависимости от СУБД и настроек сортировки (collation), ORDER BY может учитывать регистр символов.

Например, вместо привычного порядка:
apple
banana
cherry

вы можете получить:
Apple
Banana
apple
banana


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

Как отключить чувствительность к регистру? В SQLite для этого можно использовать COLLATE NOCASE:

SELECT *
FROM users
ORDER BY name COLLATE NOCASE;


Так SQL будет сортировать значения без учёта регистра, не изменяя сами данные.

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍2
Сегодня я разбирал реальные бизнес-кейсы на основе финтех-датасета.

Что удалось сделать:

Создал таблицу для проверки крупных транзакций.

Добавил тестовые транзакции вручную.
Автоматически перенёс успешные транзакции свыше ₦100 000 в отдельную таблицу с помощью INSERT INTO ... SELECT.

Но главный урок оказался вовсе не в синтаксисе SQL.

Я столкнулся с классической ошибкой новичков. Исходная таблица использовала стиль именования PascalCase (TransactionAmount), а новую таблицу я создал в snake_case (transaction_amount).

Из-за этого мои запросы постоянно выдавали ошибки.

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Вопрос по SQL:

Что вернёт этот запрос, если значение score равно NULL?

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁1
Варианты
Anonymous Quiz
5%
A
20%
B
60%
C
15%
D
1
20 нюансов PostgreSQL, о которых нужно знать

Подробный разбор основных аспектов работы с PostgreSQL — NULL, JSONB, индексация, вывод и многое другое.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4
This media is not supported in your browser
VIEW IN TELEGRAM
Нашли мощный AI-клиент для работы с базами данных

Chat2DB набрал почти 27 тысяч звёзд на GitHub

Что умеет:

Генерировать SQL-запросы по описанию на естественном языке — достаточно написать, что нужно получить, и ИИ сам составит запрос, включая сложные JOIN.

Работать сразу с десятками СУБД: MySQL, PostgreSQL, Oracle, SQL Server, SQLite и многими другими.

Анализировать данные и строить графики — можно просто спросить, например, «покажи продажи за прошлый месяц», и инструмент сам подготовит визуализацию.

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
5
PostgreSQL vs MySQL

Обе СУБД написаны на языке C, но их архитектура устроена по-разному.

PostgreSQL: PostgreSQL использует процессную архитектуру (process-based). Представьте завод, где есть управляющий (Postmaster), который координирует работу отдельных сотрудников. Для каждого нового подключения создаётся собственный процесс, а все процессы используют общую область памяти. Фоновые процессы независимо выполняют запись данных на диск, очистку базы (VACUUM), ведение журналов и другие служебные задачи.

MySQL: MySQL использует потоковую архитектуру (thread-based). Здесь один сервер одновременно обслуживает множество подключений с помощью потоков. Ещё одна особенность — поддержка подключаемых движков хранения (например, InnoDB и MyISAM), которые можно выбирать в зависимости от требований проекта.

А какую СУБД предпочитаете вы — PostgreSQL или MySQL?

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍2