sqlportal | Unsorted

Telegram-канал sqlportal - SQL Portal | Базы Данных

14500

Присоединяйтесь к нашему каналу и погрузитесь в мир баз данных Связь: @devmangx РКН: https://clck.ru/3H4Wo3

Subscribe to a channel

SQL Portal | Базы Данных

• Друзья, пришло время провести очередной конкурс. На этот раз мы разыгрываем бумажную версию книги "The Ultimate Kali Linux Book" - это новое издание книги по изучению Kali Linux, которое перевели на русский язык.

• К слову, книга содержит более 800 страниц информации и будет полезна как новичкам, так и опытным специалистам.

• Итоги подведём 8 августа в 10:00, при помощи бота, который рандомно выберет 8 победителей. Доставка для победителей бесплатная в зоне действия СДЭК. Удачи ❤

Для участия нужно:

1. Быть подписанным на наш канал: Infosec.
2. Подписаться на канал наших друзей: Мир Linux.
3. Нажать на кнопку «Участвовать»;
4. Ждать результат.

Бот может немного подвиснуть — не переживайте! В таком случае просто нажмите еще раз на кнопку «Участвовать».

#Конкурс

Читать полностью…

SQL Portal | Базы Данных

Google выпустила Open Knowledge Format (OKF) — открытый формат для хранения знаний, понятный и людям, и ИИ-агентам.

Что внутри:

Представляет знания в виде обычных Markdown-файлов с YAML-метаданными — без привязки к конкретному фреймворку или поставщику моделей.

Подходит для описания таблиц БД, API, метрик, документации, плейбуков и других артефактов в едином формате.

Все данные можно хранить в Git, версионировать, связывать между собой и использовать как базу знаний для ИИ-агентов или поисковых систем.

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Нашли мощный AI-клиент для работы с базами данных

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

Что умеет:

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

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

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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Вопрос по SQL:

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

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

Читать полностью…

SQL Portal | Базы Данных

Совет по SQL для начинающих

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

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

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

Например:

PostgreSQL / MySQL

SELECT *
FROM employees
LIMIT 10;


SQL Server

SELECT TOP 10 *
FROM employees;


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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Учимся читать SQL SELECT

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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

А кто-о-о это сделал: они полностью переписали 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

Читать полностью…

SQL Portal | Базы Данных

Не пиши в SQL = NULL или != NULL

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

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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Интерактивное разъяснение про B-деревья

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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Не используйте 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

Читать полностью…

SQL Portal | Базы Данных

SQL-совет, который должен знать каждый новичок

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

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


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

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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Некоторые 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

Читать полностью…

SQL Portal | Базы Данных

Наглядное объяснение операций соединения в SQL.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Бесплатные курсы по «Data Science» от Kaggle Learn

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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Фатальная ошибка в pandas

Такой код не фильтрует значения NULL или None:

df[df['user_id'] != None]


В pandas пропущенные значения представлены как NaN или None, но оператор != работает с ними не так, как многие ожидают.

Поэтому такой фильтр не удаляет все пропущенные значения.

Вместо этого используйте:
df[df['user_id'].notna()]


или
df.dropna(subset=['user_id'])


Для проверки пропущенных значений в pandas всегда используйте методы isna() и notna(), а не операторы == или !=.

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

PostgreSQL vs MySQL

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

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

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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

20 нюансов PostgreSQL, о которых нужно знать

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Сегодня я разбирал реальные бизнес-кейсы на основе финтех-датасета.

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

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

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

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

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

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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Подборка SQL-запросов для быстрой диагностики PostgreSQL, которые помогают обнаружить проблемы ещё до того, как они перерастут в серьёзные сбои.

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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Объяснение JOIN, которое мы заслужили 😄

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

SQL-совет для начинающих

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

SELECT column1, column2
FROM table
WHERE ...;


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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Полезное для разработчиков: SQL vs NoSQL простыми словами

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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

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

Читать полностью…

SQL Portal | Базы Данных

Золотое правило 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 группирует уже отфильтрованные данные.

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

Запомните порядок выполнения:
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

300+ практических задач: подарок тем, кто изучает SQL

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

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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

НОВОЕ: Durable Functions в PostgreSQL

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Ловите исчерпывающее руководство по подготовке к SQL собеседованию

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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

SQL-совет, который должен знать каждый новичок
Используйте возможности оператора WHERE.

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

SELECT * FROM sales
WHERE region = 'Abuja'
AND year = 2026;

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

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

👉 @SQLPortal

Читать полностью…

SQL Portal | Базы Данных

Руководство по SQL

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

Материал дополнен практическими примерами, которые способствуют лучшему усвоению информации.

👉 @SQLPortal

Читать полностью…
Subscribe to a channel