Не используйте
Использование
Когда используется
Вот наивный пример:
В этом запросе каждая строка, которая не удовлетворяет условию, превращается в
Лучше всего вообще убрать
В этой версии строки, не подходящие под условие, возвращают
👉 @SQLPortal
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() естественным образом исключает их из подсчёта. В итоге запрос получается чище, а подсчёт корректно отражает только те значения, которые реально соответствуют условию.Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Золотое правило SQL: Всегда используйте
Неправильно:
В SQL такой запрос вообще не выполнится, потому что оператор
Правильно:
Почему это важно?
В результате запрос выполняется корректно и зачастую эффективнее, поскольку группировать приходится меньше строк.
Запомните порядок выполнения:
Это одно из базовых правил SQL, которое поможет избежать ошибок и писать более эффективные запросы.
👉 @SQLPortal
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 группирует уже отфильтрованные данные.В результате запрос выполняется корректно и зачастую эффективнее, поскольку группировать приходится меньше строк.
Запомните порядок выполнения:
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BYЭто одно из базовых правил SQL, которое поможет избежать ошибок и писать более эффективные запросы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Интерактивное разъяснение про B-деревья
Это не просто статья, а интерактивное руководство: можно шаг за шагом смотреть, как устроено B+Tree, как происходит поиск, вставка и почему структура остаётся сбалансированной. Очень наглядно показывает, как индексы реально работают внутри БД
Один из лучших способов наконец-то сложить картинку в голове👍
👉 @SQLPortal
Это не просто статья, а интерактивное руководство: можно шаг за шагом смотреть, как устроено B+Tree, как происходит поиск, вставка и почему структура остаётся сбалансированной. Очень наглядно показывает, как индексы реально работают внутри БД
Один из лучших способов наконец-то сложить картинку в голове
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔2
Postgres CONCAT_WS удобно собирает строку даже если есть NULL:
Если middle_initial = 'T', то результат будет:
Если middle_initial = NULL, то получится:
Пробел вставляется только между существующими значениями, так что итоговая строка выглядит нормально без лишних пробелов.
👉 @SQLPortal
SELECT CONCAT_WS(' ', first_name, middle_initial, last_name);Если middle_initial = 'T', то результат будет:
John T Smith
Если middle_initial = NULL, то получится:
John Smith
Пробел вставляется только между существующими значениями, так что итоговая строка выглядит нормально без лишних пробелов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥1
Не пиши в SQL = NULL или != NULL
Для NULL всегда используй IS NULL / IS NOT NULL
NULL это “нет значения / неизвестно”, и обычные операторы сравнения (=, !=, <, >) с ним не работают, потому что NULL не равен, не больше и не меньше вообще ничего.
= / != сравнивают значения. А NULL это не значение, а отсутствие значения. Поэтому IS / IS NOT проверяют именно наличие или отсутствие значения.
👉 @SQLPortal
Для NULL всегда используй IS NULL / IS NOT NULL
NULL это “нет значения / неизвестно”, и обычные операторы сравнения (=, !=, <, >) с ним не работают, потому что NULL не равен, не больше и не меньше вообще ничего.
= / != сравнивают значения. А NULL это не значение, а отсутствие значения. Поэтому IS / IS NOT проверяют именно наличие или отсутствие значения.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Полезное для разработчиков: SQL vs NoSQL простыми словами
Не знаете, какую базу данных выбрать для своего проекта? Эта статья поможет разобраться в ключевых отличиях SQL и NoSQL: модели данных, схемах, масштабировании, производительности, транзакциях и типичных сценариях использования.
Материал сопровождается понятными схемами, примерами запросов и сравнительными таблицами, поэтому отлично подойдет как новичкам, так и разработчикам, которые готовятся к собеседованиям или изучают System Design.
👉 @SQLPortal
Не знаете, какую базу данных выбрать для своего проекта? Эта статья поможет разобраться в ключевых отличиях SQL и NoSQL: модели данных, схемах, масштабировании, производительности, транзакциях и типичных сценариях использования.
Материал сопровождается понятными схемами, примерами запросов и сравнительными таблицами, поэтому отлично подойдет как новичкам, так и разработчикам, которые готовятся к собеседованиям или изучают System Design.
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
Важно: это не форк, а полностью новая реализация с нуля на Rust, которая на данный момент:
• Проходит все 46 066 запросов из regression suite PostgreSQL 18.3.
• Совместима на уровне диска (можно запустить её напрямую с вашим текущим каталогом данных).
• Имеет рабочее демо в браузере.
Цель проекта — сделать одну из самых сложных баз данных в мире значительно проще для модификации, расширения и оптимизации изнутри, используя Rust и AI-assisted programming.
И самое безумное: уже существует WIP-версия (пока не опубликована), которая обещает быть на 50% быстрее на транзакционных нагрузках и примерно в 300 раз быстрее на аналитических нагрузках.
https://github.com/malisper/pgrust
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
SQL-совет для начинающих
Не используйте SELECT * в реальных проектах. Вместо этого явно указывайте только те столбцы, которые действительно нужны:
Такой подход:
• экономит время выполнения запроса;
• уменьшает объём передаваемых данных;
• делает ваш код более читаемым и понятным.
👉 @SQLPortal
Не используйте SELECT * в реальных проектах. Вместо этого явно указывайте только те столбцы, которые действительно нужны:
SELECT column1, column2
FROM table
WHERE ...;
Такой подход:
• экономит время выполнения запроса;
• уменьшает объём передаваемых данных;
• делает ваш код более читаемым и понятным.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
Учимся читать SQL SELECT
Статья доступно объясняет принцип работы SELECT, представляя его как конвейер. Каждый этап — это ключевое слово (FROM, JOIN, WHERE и т.д.), которое преобразует данные
Подача материала очень наглядная, только самая необходимая практическая информация📚
👉 @SQLPortal
Статья доступно объясняет принцип работы SELECT, представляя его как конвейер. Каждый этап — это ключевое слово (FROM, JOIN, WHERE и т.д.), которое преобразует данные
Подача материала очень наглядная, только самая необходимая практическая информация
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Совет по SQL для начинающих
При тестировании запросов всегда используйте
Это позволит:
• быстро проверить результат запроса;
• избежать случайной выборки миллионов строк;
• снизить нагрузку на базу данных.
Например:
PostgreSQL / MySQL
SQL Server
Эта простая привычка может избавить вас от неприятных ситуаций, когда тестовый запрос случайно начинает обрабатывать огромные объёмы данных.
👉 @SQLPortal
При тестировании запросов всегда используйте
LIMIT 10 (или TOP 10 в SQL Server).Это позволит:
• быстро проверить результат запроса;
• избежать случайной выборки миллионов строк;
• снизить нагрузку на базу данных.
Например:
PostgreSQL / MySQL
SELECT *
FROM employees
LIMIT 10;
SQL Server
SELECT TOP 10 *
FROM employees;
Эта простая привычка может избавить вас от неприятных ситуаций, когда тестовый запрос случайно начинает обрабатывать огромные объёмы данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
SQL для начинающих
Если вам нужно посчитать общее количество строк, используйте
Это важно, потому что:
Одна небольшая ошибка может привести к неверной аналитике и неправильным выводам в отчётах.
👉 @SQLPortal
Если вам нужно посчитать общее количество строк, используйте
COUNT(*), а не COUNT(column).Это важно, потому что:
COUNT(*) считает все строки.COUNT(column) считает только те строки, где значение указанного столбца не равно NULL.Одна небольшая ошибка может привести к неверной аналитике и неправильным выводам в отчётах.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
Cправочник-песочница разработчиков
Здесь вы найдёте понятные уроки по HTML, CSS, JavaScript, Python, SQL и множеству других языков и технологий. Всё можно сразу пощупать вживую редактируй код и смотри результат прямо в браузере😮
👉 @SQLPortal
Здесь вы найдёте понятные уроки по HTML, CSS, JavaScript, Python, SQL и множеству других языков и технологий. Всё можно сразу пощупать вживую редактируй код и смотри результат прямо в браузере
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 для начинающих
Используйте
Например, можно посчитать количество клиентов в каждом регионе:
Такой запрос покажет, сколько клиентов находится в каждом регионе (
Где это пригодится?
• анализ количества клиентов по регионам;
• подсчёт заказов по категориям;
• количество сотрудников по отделам;
• построение сводных отчётов.
Комбинация
👉 @SQLPortal
Используйте
GROUP BY вместе с COUNT(), чтобы узнать, сколько записей относится к каждой группе.Например, можно посчитать количество клиентов в каждом регионе:
SELECT State, COUNT(*) AS Total
FROM customers
GROUP BY State;
Такой запрос покажет, сколько клиентов находится в каждом регионе (
State).Где это пригодится?
• анализ количества клиентов по регионам;
• подсчёт заказов по категориям;
• количество сотрудников по отделам;
• построение сводных отчётов.
Комбинация
GROUP BY + COUNT() — одна из самых часто используемых конструкций в SQL для аналитики и формирования отчётов.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.
Что вы изучите:
Все знания закрепляются на практике с помощью заданий с автопроверкой.
Материал подаётся последовательно и понятным языком: с примерами, схемами и демонстрациями. Во время обучения можно задавать вопросы по урокам и заданиям, получать обратную связь и помощь при возникновении сложностей.
После прохождения программы вы получите сертификат, который можно добавить в резюме.
Скидка 20% на 48 часов: по промокоду
Открыть программу на Stepik
Это комплексная программа из 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
Автор показывает, что современные версии PostgreSQL способны решать множество задач, которые разработчики часто перекладывают на приложение или дополнительные сервисы.
Использование встроенных возможностей базы данных делает архитектуру проще, уменьшает количество кода и зачастую повышает производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Совет по SQL для начинающих
Не используйте
Вместо этого явно указывайте только те столбцы, которые действительно нужны:
Почему это лучше?
• Запросы выполняются быстрее — извлекаются только нужные данные.
• Снижается нагрузка на базу данных и сеть.
• Код становится более понятным и удобным для сопровождения.
• Такой подход считается хорошей практикой и используется в профессиональной разработке.
Использование
👉 @SQLPortal
Не используйте
SELECT * в реальных проектах!Вместо этого явно указывайте только те столбцы, которые действительно нужны:
SELECT CustomerName, OrderDate, Amount
FROM Orders
WHERE OrderDate >= '2026-01-01';
Почему это лучше?
• Запросы выполняются быстрее — извлекаются только нужные данные.
• Снижается нагрузка на базу данных и сеть.
• Код становится более понятным и удобным для сопровождения.
• Такой подход считается хорошей практикой и используется в профессиональной разработке.
Использование
SELECT * допустимо при быстром исследовании данных, но в production-коде лучше всегда перечислять необходимые столбцы явно.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