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

Связь: @devmangx

РКН: https://clck.ru/3H4Wo3
Download Telegram
Не используйте ELSE 0 вместе с COUNT и CASE

Использование ELSE 0 - очень частая ошибка у новичков, когда они комбинируют функцию COUNT с выражением CASE. Обычно это происходит из-за непонимания того, как именно COUNT работает при применении к столбцу.

Когда используется COUNT(column), функция считает все значения, которые не равны NULL, включая нули. Это значит, что если в выражении CASE указан ELSE 0, каждая строка, не попавшая под условие, превращается в значение 0. В результате такие строки тоже попадают в подсчёт.

Вот наивный пример:

sql id="g4suvd"
SELECT
Department,
COUNT(CASE
WHEN Status = 'Active' THEN EmployeeID
ELSE 0
END) AS ActiveEmployees
FROM Employees
GROUP BY Department;


В этом запросе каждая строка, которая не удовлетворяет условию, превращается в 0, а это валидное значение, поэтому оно тоже учитывается в COUNT. Из-за этого результат может получиться вводящим в заблуждение.

Лучше всего вообще убрать ELSE. Когда ветка ELSE опущена, выражение CASE возвращает NULL для строк, которые не соответствуют условию. А так как COUNT() игнорирует NULL, будут посчитаны только строки, которые действительно удовлетворяют условию. Вот правильный вариант:

sql id="vxa5np"
SELECT
Department,
COUNT(CASE
WHEN Status = 'Active' THEN EmployeeID
END) AS ActiveEmployees
FROM Employees
GROUP BY Department;


В этой версии строки, не подходящие под условие, возвращают NULL, и COUNT() естественным образом исключает их из подсчёта. В итоге запрос получается чище, а подсчёт корректно отражает только те значения, которые реально соответствуют условию.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Золотое правило SQL: Всегда используйте WHERE перед GROUP BY.

Неправильно:
SELECT Department, COUNT(*)
FROM Employees
GROUP BY Department
WHERE Salary > 50000;


В SQL такой запрос вообще не выполнится, потому что оператор WHERE должен идти до GROUP BY.

Правильно:
SELECT Department, COUNT(*)
FROM Employees
WHERE Salary > 50000
GROUP BY Department;


Почему это важно? WHERE сначала отбирает только нужные строки. Затем GROUP BY группирует уже отфильтрованные данные.

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

Запомните порядок выполнения:
FROMWHEREGROUP BYHAVINGSELECTORDER BY

Это одно из базовых правил SQL, которое поможет избежать ошибок и писать более эффективные запросы.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Интерактивное разъяснение про B-деревья

Это не просто статья, а интерактивное руководство: можно шаг за шагом смотреть, как устроено B+Tree, как происходит поиск, вставка и почему структура остаётся сбалансированной. Очень наглядно показывает, как индексы реально работают внутри БД

Один из лучших способов наконец-то сложить картинку в голове 👍

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔2
Postgres CONCAT_WS удобно собирает строку даже если есть NULL:

SELECT CONCAT_WS(' ', first_name, middle_initial, last_name);


Если middle_initial = 'T', то результат будет:

John T Smith


Если middle_initial = NULL, то получится:

John Smith


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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥1
Не пиши в SQL = NULL или != NULL

Для NULL всегда используй IS NULL / IS NOT NULL

NULL это “нет значения / неизвестно”, и обычные операторы сравнения (=, !=, <, >) с ним не работают, потому что NULL не равен, не больше и не меньше вообще ничего.

= / != сравнивают значения. А NULL это не значение, а отсутствие значения. Поэтому IS / IS NOT проверяют именно наличие или отсутствие значения.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Полезное для разработчиков: SQL vs NoSQL простыми словами

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

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
А кто-о-о это сделал: они полностью переписали PostgreSQL на Rust и он уже проходит 100% официальных тестов PostgreSQL 😔

Важно: это не форк, а полностью новая реализация с нуля на Rust, которая на данный момент:

• Проходит все 46 066 запросов из regression suite PostgreSQL 18.3.
• Совместима на уровне диска (можно запустить её напрямую с вашим текущим каталогом данных).
• Имеет рабочее демо в браузере.

Цель проекта — сделать одну из самых сложных баз данных в мире значительно проще для модификации, расширения и оптимизации изнутри, используя Rust и AI-assisted programming.

И самое безумное: уже существует WIP-версия (пока не опубликована), которая обещает быть на 50% быстрее на транзакционных нагрузках и примерно в 300 раз быстрее на аналитических нагрузках.

https://github.com/malisper/pgrust

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
SQL-совет для начинающих

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

SELECT column1, column2
FROM table
WHERE ...;


Такой подход:

• экономит время выполнения запроса;
• уменьшает объём передаваемых данных;
• делает ваш код более читаемым и понятным.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
6
Учимся читать SQL SELECT

Статья доступно объясняет принцип работы SELECT, представляя его как конвейер. Каждый этап — это ключевое слово (FROM, JOIN, WHERE и т.д.), которое преобразует данные

Подача материала очень наглядная, только самая необходимая практическая информация 📚

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Объяснение JOIN, которое мы заслужили 😄

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁136🔥4
Совет по SQL для начинающих

При тестировании запросов всегда используйте LIMIT 10 (или TOP 10 в SQL Server).

Это позволит:

• быстро проверить результат запроса;
• избежать случайной выборки миллионов строк;
• снизить нагрузку на базу данных.

Например:

PostgreSQL / MySQL
SELECT *
FROM employees
LIMIT 10;


SQL Server

SELECT TOP 10 *
FROM employees;


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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
SQL для начинающих

Если вам нужно посчитать общее количество строк, используйте COUNT(*), а не COUNT(column).

Это важно, потому что:
COUNT(*) считает все строки.
COUNT(column) считает только те строки, где значение указанного столбца не равно NULL.

Одна небольшая ошибка может привести к неверной аналитике и неправильным выводам в отчётах.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Cправочник-песочница разработчиков

Здесь вы найдёте понятные уроки по HTML, CSS, JavaScript, Python, SQL и множеству других языков и технологий. Всё можно сразу пощупать вживую редактируй код и смотри результат прямо в браузере 😮

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
sql_nosql.pdf
6.4 MB
Годнота из Linkedin — авторский чит-лист с командами для SQL и для NoSQL.

Красивое, красочное, да еще и с учетом специфики разных систем 👍

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
SQL для начинающих

Используйте GROUP BY вместе с COUNT(), чтобы узнать, сколько записей относится к каждой группе.

Например, можно посчитать количество клиентов в каждом регионе:
SELECT State, COUNT(*) AS Total
FROM customers
GROUP BY State;


Такой запрос покажет, сколько клиентов находится в каждом регионе (State).

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

• анализ количества клиентов по регионам;
• подсчёт заказов по категориям;
• количество сотрудников по отделам;
• построение сводных отчётов.

Комбинация GROUP BY + COUNT() — одна из самых часто используемых конструкций в SQL для аналитики и формирования отчётов.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
5
На Stepik вышла программа «DevOps с нуля: от Linux до Kubernetes»

Это комплексная программа из 5 практических курсов по ключевым технологиям DevOps: Linux, Git, Docker, GitLab CI/CD, Kubernetes

Вы последовательно пройдёте путь от работы в Linux и управления кодом через Git до контейнеризации приложений, настройки CI/CD-пайплайнов и развёртывания в Kubernetes.

Что вы изучите:
• работу с Linux и командной строкой
• Git и контроль версий в реальных проектах
• создание Docker-образов и запуск контейнеров
• автоматизацию сборки, тестирования и деплоя в GitLab CI/CD
• развёртывание и управление приложениями в Kubernetes
• сети, хранилища, конфигурации и секреты
• диагностику инфраструктуры и автоматизацию рутинных задач
... и многое другое

Все знания закрепляются на практике с помощью заданий с автопроверкой.

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

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

Скидка 20% на 48 часов: по промокоду DEVOPS20 стоимость всей программы составит 10 392 ₽.

Открыть программу на Stepik
PostgreSQL для бэкендера: 10 фич, которыми мало пользуются, а зря

Автор показывает, что современные версии PostgreSQL способны решать множество задач, которые разработчики часто перекладывают на приложение или дополнительные сервисы.

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Совет по SQL для начинающих

Не используйте SELECT * в реальных проектах!

Вместо этого явно указывайте только те столбцы, которые действительно нужны:

SELECT CustomerName, OrderDate, Amount
FROM Orders
WHERE OrderDate >= '2026-01-01';


Почему это лучше?

• Запросы выполняются быстрее — извлекаются только нужные данные.
• Снижается нагрузка на базу данных и сеть.
• Код становится более понятным и удобным для сопровождения.
• Такой подход считается хорошей практикой и используется в профессиональной разработке.

Использование SELECT * допустимо при быстром исследовании данных, но в production-коде лучше всегда перечислять необходимые столбцы явно.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3
Шпаргалка по SQL-функциям

🔸Агрегатные функции (COUNT, SUM, AVG, MIN, MAX),
🔸оконные функции (ROW_NUMBER, RANK, LAG, LEAD),
🔸строковые функции (LOWER, SUBSTRING, CONCAT),
🔸работа с датами (NOW, DATE_PART, TRUNC),
🔸управление потоком (CASE, COALESCE),
🔸фильтры (IN, LIKE),
🔸математика (ROUND, MOD).

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