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

Связь: @devmangx

РКН: https://clck.ru/3H4Wo3
Download Telegram
Бесплатные курсы по «Data Science» от Kaggle Learn

Бесплатные курсы по анализу данных, машинному обучению, Python, SQL и другим инструментам data science. Построены по принципу: «минимум теории, максимум кода»

Все задания выполняются в Jupyter ноутбуках прямо в браузере и есть система автоматической проверки 👍

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥52
SQL-совет, который должен знать каждый новичок
Используйте возможности оператора WHERE.

Вместо того чтобы загружать все данные о продажах компании, сразу отфильтруйте только нужные записи:
SELECT * FROM sales
WHERE region = 'Abuja'
AND year = 2026;

Такой подход:
• ускоряет выполнение запроса;
• уменьшает объём передаваемых данных;
• снижает нагрузку на базу данных;
• особенно полезен при работе с большими таблицами.

Привычка сразу использовать WHERE там, где это возможно, сделает ваши SQL-запросы более эффективными и профессиональными.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁41
Наглядное объяснение операций соединения в SQL.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍2
Ловите исчерпывающее руководство по подготовке к SQL собеседованию

Если впереди SQL-собес и руки уже холодеют от волнения — не парься! В этом гайде собраны топовые вопросы, разборы и лайфхаки, которые помогут уверенно писать запросы и понимать, что от тебя хотят рекрутеры

Всё по полочкам и максимально доступно 📚

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4
Некоторые SQL-грабли, на которые до сих пор наступают даже сеньоры (мне тоже иногда приходится лезть в доки и перепроверять):

1. = NULL никогда не бывает true. Используй IS NULL / IS NOT NULL (трехзначная логика: true, false, unknown).

2. NOT IN (...) + один NULL в списке может вернуть ноль строк. Чаще безопаснее NOT EXISTS.

3. LEFT JOIN + фильтр в WHERE превращается в INNER JOIN. Фильтры по джойну клади в ON.

4. COUNT(col) пропускает NULL, а COUNT(*) нет. Из-за этого метрики потом “магически” не сходятся.

5. NULL ломает конкатенацию и сравнения. Используй COALESCE осознанно.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍112
This media is not supported in your browser
VIEW IN TELEGRAM
НОВОЕ: Durable Functions в PostgreSQL

pg_durable это расширение для PostgreSQL. Состояние рабочего процесса (workflow), очередь, повторные попытки и восстановление хранятся в Postgres, а для обеспечения надёжности, высокой доступности (HA), резервного копирования и восстановления используются встроенные возможности Postgres.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4
SQL-совет, который должен знать каждый новичок

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

SELECT FirstName, Salary, Department
FROM Employees
WHERE Department = 'Sales';


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

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

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
3👀1
300+ практических задач: подарок тем, кто изучает SQL

Если хотите научиться писать SQL не только по теории, но и на практике, попробуйте SQL Climber.

Платформа предлагает более 300 интерактивных заданий разного уровня сложности от простых SELECT-запросов до более сложных тем с JOIN, агрегатными функциями и подзапросами.

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

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
4🤔1
Не используйте 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