Руководство по SQL
Это руководство охватывает различные аспекты, начиная с основ SQL и до более сложных тем.
Материал дополнен практическими примерами, которые способствуют лучшему усвоению информации.
👉 @SQLPortal
Это руководство охватывает различные аспекты, начиная с основ SQL и до более сложных тем.
Материал дополнен практическими примерами, которые способствуют лучшему усвоению информации.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Бесплатные курсы по «Data Science» от Kaggle Learn
Бесплатные курсы по анализу данных, машинному обучению, Python, SQL и другим инструментам data science. Построены по принципу: «минимум теории, максимум кода»
Все задания выполняются в Jupyter ноутбуках прямо в браузере и есть система автоматической проверки👍
👉 @SQLPortal
Бесплатные курсы по анализу данных, машинному обучению, Python, SQL и другим инструментам data science. Построены по принципу: «минимум теории, максимум кода»
Все задания выполняются в Jupyter ноутбуках прямо в браузере и есть система автоматической проверки
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5❤2
SQL-совет, который должен знать каждый новичок
Используйте возможности оператора
Вместо того чтобы загружать все данные о продажах компании, сразу отфильтруйте только нужные записи:
Такой подход:
• ускоряет выполнение запроса;
• уменьшает объём передаваемых данных;
• снижает нагрузку на базу данных;
• особенно полезен при работе с большими таблицами.
Привычка сразу использовать
👉 @SQLPortal
Используйте возможности оператора
WHERE.Вместо того чтобы загружать все данные о продажах компании, сразу отфильтруйте только нужные записи:
SELECT * FROM sales
WHERE region = 'Abuja'
AND year = 2026;
Такой подход:
• ускоряет выполнение запроса;
• уменьшает объём передаваемых данных;
• снижает нагрузку на базу данных;
• особенно полезен при работе с большими таблицами.
Привычка сразу использовать
WHERE там, где это возможно, сделает ваши SQL-запросы более эффективными и профессиональными.Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁4❤1
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
Если впереди SQL-собес и руки уже холодеют от волнения — не парься! В этом гайде собраны топовые вопросы, разборы и лайфхаки, которые помогут уверенно писать запросы и понимать, что от тебя хотят рекрутеры
Всё по полочкам и максимально доступно
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Некоторые SQL-грабли, на которые до сих пор наступают даже сеньоры (мне тоже иногда приходится лезть в доки и перепроверять):
1.
2.
3.
4.
5.
👉 @SQLPortal
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 осознанно.Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2
This media is not supported in your browser
VIEW IN TELEGRAM
НОВОЕ: Durable Functions в PostgreSQL
pg_durable это расширение для PostgreSQL. Состояние рабочего процесса (workflow), очередь, повторные попытки и восстановление хранятся в Postgres, а для обеспечения надёжности, высокой доступности (HA), резервного копирования и восстановления используются встроенные возможности Postgres.
👉 @SQLPortal
pg_durable это расширение для PostgreSQL. Состояние рабочего процесса (workflow), очередь, повторные попытки и восстановление хранятся в Postgres, а для обеспечения надёжности, высокой доступности (HA), резервного копирования и восстановления используются встроенные возможности Postgres.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
SQL-совет, который должен знать каждый новичок
Не используйте
Вместо этого явно указывайте только те столбцы, которые действительно нужны:
Почему это лучше?
• Запросы выполняются быстрее — извлекаются только нужные данные.
• Снижается нагрузка на базу данных и сеть.
• Код становится понятнее и проще в поддержке.
• Изменения в структуре таблицы с меньшей вероятностью повлияют на работу приложения.
Использование
👉 @SQLPortal
Не используйте
SELECT * в реальных проектах.Вместо этого явно указывайте только те столбцы, которые действительно нужны:
SELECT FirstName, Salary, Department
FROM Employees
WHERE Department = 'Sales';
Почему это лучше?
• Запросы выполняются быстрее — извлекаются только нужные данные.
• Снижается нагрузка на базу данных и сеть.
• Код становится понятнее и проще в поддержке.
• Изменения в структуре таблицы с меньшей вероятностью повлияют на работу приложения.
Использование
SELECT * допустимо при быстром исследовании данных или в учебных примерах, но в production-коде считается плохой практикой.Please open Telegram to view this post
VIEW IN TELEGRAM
❤3👀1
300+ практических задач: подарок тем, кто изучает SQL
Если хотите научиться писать SQL не только по теории, но и на практике, попробуйте SQL Climber.
Платформа предлагает более 300 интерактивных заданий разного уровня сложности от простых
Каждое задание проверяется автоматически, поэтому можно сразу увидеть результат и исправить ошибки. Отличный ресурс для новичков, подготовки к собеседованиям и регулярной практики SQL.
👉 @SQLPortal
Если хотите научиться писать SQL не только по теории, но и на практике, попробуйте SQL Climber.
Платформа предлагает более 300 интерактивных заданий разного уровня сложности от простых
SELECT-запросов до более сложных тем с JOIN, агрегатными функциями и подзапросами.Каждое задание проверяется автоматически, поэтому можно сразу увидеть результат и исправить ошибки. Отличный ресурс для новичков, подготовки к собеседованиям и регулярной практики SQL.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4🤔1
Не используйте
Использование
Когда используется
Вот наивный пример:
В этом запросе каждая строка, которая не удовлетворяет условию, превращается в
Лучше всего вообще убрать
В этой версии строки, не подходящие под условие, возвращают
👉 @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