14500
Присоединяйтесь к нашему каналу и погрузитесь в мир баз данных Связь: @devmangx РКН: https://clck.ru/3H4Wo3
• Друзья, пришло время провести очередной конкурс. На этот раз мы разыгрываем бумажную версию книги "The Ultimate Kali Linux Book" - это новое издание книги по изучению Kali Linux, которое перевели на русский язык.
• К слову, книга содержит более 800 страниц информации и будет полезна как новичкам, так и опытным специалистам.
• Итоги подведём 8 августа в 10:00, при помощи бота, который рандомно выберет 8 победителей. Доставка для победителей бесплатная в зоне действия СДЭК. Удачи ❤
Для участия нужно:
1. Быть подписанным на наш канал: Infosec.
2. Подписаться на канал наших друзей: Мир Linux.
3. Нажать на кнопку «Участвовать»;
4. Ждать результат.
Бот может немного подвиснуть — не переживайте! В таком случае просто нажмите еще раз на кнопку «Участвовать».
#Конкурс
Google выпустила Open Knowledge Format (OKF) — открытый формат для хранения знаний, понятный и людям, и ИИ-агентам.
Что внутри:
Представляет знания в виде обычных Markdown-файлов с YAML-метаданными — без привязки к конкретному фреймворку или поставщику моделей.
Подходит для описания таблиц БД, API, метрик, документации, плейбуков и других артефактов в едином формате.
Все данные можно хранить в Git, версионировать, связывать между собой и использовать как базу знаний для ИИ-агентов или поисковых систем.
Полезный проект для команд, которые строят AI-агентов, работают с корпоративной документацией или хотят превратить внутренние знания компании в структурированную базу, пригодную для автоматической обработки.
👉 @SQLPortal
Нашли мощный AI-клиент для работы с базами данных
Chat2DB набрал почти 27 тысяч звёзд на GitHub
Что умеет:
Генерировать SQL-запросы по описанию на естественном языке — достаточно написать, что нужно получить, и ИИ сам составит запрос, включая сложные JOIN.
Работать сразу с десятками СУБД: MySQL, PostgreSQL, Oracle, SQL Server, SQLite и многими другими.
Анализировать данные и строить графики — можно просто спросить, например, «покажи продажи за прошлый месяц», и инструмент сам подготовит визуализацию.
Полезный инструмент для тех, кто часто работает с SQL и базами данных или хочет ускорить написание запросов с помощью ИИ.
👉 @SQLPortal
Вопрос по SQL:
Что вернёт этот запрос, если значение score равно NULL?
👉 @SQLPortal
SQL-совет: ORDER BY может учитывать регистр
Многие считают, что сортировка текста в SQL всегда происходит просто — от A до Z. Но это не всегда так.
В зависимости от СУБД и настроек сортировки (collation), ORDER BY может учитывать регистр символов.
Например, вместо привычного порядка:
apple
banana
cherry
Apple
Banana
apple
banana
COLLATE NOCASE:SELECT *
FROM users
ORDER BY name COLLATE NOCASE;
ORDER BY выглядят странно, первым делом проверьте настройки collation — именно они часто определяют, как база данных сравнивает и сортирует текст.
Совет по SQL для начинающих
При тестировании запросов всегда используйте LIMIT 10 (или TOP 10 в SQL Server).
Это позволит:
• быстро проверить результат запроса;
• избежать случайной выборки миллионов строк;
• снизить нагрузку на базу данных.
Например:
PostgreSQL / MySQL
SELECT *
FROM employees
LIMIT 10;
SELECT TOP 10 *
FROM employees;
Учимся читать SQL SELECT
Статья доступно объясняет принцип работы SELECT, представляя его как конвейер. Каждый этап — это ключевое слово (FROM, JOIN, WHERE и т.д.), которое преобразует данные
Подача материала очень наглядная, только самая необходимая практическая информация 📚
👉 @SQLPortal
А кто-о-о это сделал: они полностью переписали 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 = NULL или != NULL
Для NULL всегда используй IS NULL / IS NOT NULL
NULL это “нет значения / неизвестно”, и обычные операторы сравнения (=, !=, <, >) с ним не работают, потому что NULL не равен, не больше и не меньше вообще ничего.
= / != сравнивают значения. А NULL это не значение, а отсутствие значения. Поэтому IS / IS NOT проверяют именно наличие или отсутствие значения.
👉 @SQLPortal
Интерактивное разъяснение про B-деревья
Это не просто статья, а интерактивное руководство: можно шаг за шагом смотреть, как устроено B+Tree, как происходит поиск, вставка и почему структура остаётся сбалансированной. Очень наглядно показывает, как индексы реально работают внутри БД
Один из лучших способов наконец-то сложить картинку в голове 👍
👉 @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() естественным образом исключает их из подсчёта. В итоге запрос получается чище, а подсчёт корректно отражает только те значения, которые реально соответствуют условию.
SQL-совет, который должен знать каждый новичок
Не используйте SELECT * в реальных проектах.
Вместо этого явно указывайте только те столбцы, которые действительно нужны:
SELECT FirstName, Salary, Department
FROM Employees
WHERE Department = 'Sales';
SELECT * допустимо при быстром исследовании данных или в учебных примерах, но в production-коде считается плохой практикой.
Некоторые 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.
👉 @SQLPortal
Бесплатные курсы по «Data Science» от Kaggle Learn
Бесплатные курсы по анализу данных, машинному обучению, Python, SQL и другим инструментам data science. Построены по принципу: «минимум теории, максимум кода»
Все задания выполняются в Jupyter ноутбуках прямо в браузере и есть система автоматической проверки 👍
👉 @SQLPortal
Фатальная ошибка в pandas
Такой код не фильтрует значения NULL или None:
df[df['user_id'] != None]
pandas пропущенные значения представлены как NaN или None, но оператор != работает с ними не так, как многие ожидают.df[df['user_id'].notna()]
df.dropna(subset=['user_id'])
pandas всегда используйте методы isna() и notna(), а не операторы == или !=.
PostgreSQL vs MySQL
Обе СУБД написаны на языке C, но их архитектура устроена по-разному.
PostgreSQL: PostgreSQL использует процессную архитектуру (process-based). Представьте завод, где есть управляющий (Postmaster), который координирует работу отдельных сотрудников. Для каждого нового подключения создаётся собственный процесс, а все процессы используют общую область памяти. Фоновые процессы независимо выполняют запись данных на диск, очистку базы (VACUUM), ведение журналов и другие служебные задачи.
MySQL: MySQL использует потоковую архитектуру (thread-based). Здесь один сервер одновременно обслуживает множество подключений с помощью потоков. Ещё одна особенность — поддержка подключаемых движков хранения (например, InnoDB и MyISAM), которые можно выбирать в зависимости от требований проекта.
А какую СУБД предпочитаете вы — PostgreSQL или MySQL?
👉 @SQLPortal
20 нюансов PostgreSQL, о которых нужно знать
Подробный разбор основных аспектов работы с PostgreSQL — NULL, JSONB, индексация, вывод и многое другое.
👉 @SQLPortal
Сегодня я разбирал реальные бизнес-кейсы на основе финтех-датасета.
Что удалось сделать:
Создал таблицу для проверки крупных транзакций.
Добавил тестовые транзакции вручную.
Автоматически перенёс успешные транзакции свыше ₦100 000 в отдельную таблицу с помощью INSERT INTO ... SELECT.
Но главный урок оказался вовсе не в синтаксисе SQL.
Я столкнулся с классической ошибкой новичков. Исходная таблица использовала стиль именования PascalCase (TransactionAmount), а новую таблицу я создал в snake_case (transaction_amount).
Из-за этого мои запросы постоянно выдавали ошибки.
В итоге я понял важное правило: в операторе SELECT всегда нужно обращаться к именам столбцов именно так, как они называются в исходной таблице, независимо от того, как эти столбцы названы в таблице назначения.
👉 @SQLPortal
Подборка SQL-запросов для быстрой диагностики PostgreSQL, которые помогают обнаружить проблемы ещё до того, как они перерастут в серьёзные сбои.
В статье собраны готовые запросы для поиска «мёртвых» строк, самых затратных SQL-запросов, таблиц с частыми Seq Scan, неиспользуемых индексов, зависших транзакций и блокировок, а также для оценки эффективности кэша PostgreSQL.
Автор не только приводит SQL, но и объясняет, что означают результаты, какие значения считаются тревожными и как исправить найденные проблемы.
👉 @SQLPortal
Объяснение JOIN, которое мы заслужили 😄
👉 @SQLPortal
SQL-совет для начинающих
Не используйте SELECT * в реальных проектах. Вместо этого явно указывайте только те столбцы, которые действительно нужны:
SELECT column1, column2
FROM table
WHERE ...;
Полезное для разработчиков: SQL vs NoSQL простыми словами
Не знаете, какую базу данных выбрать для своего проекта? Эта статья поможет разобраться в ключевых отличиях SQL и NoSQL: модели данных, схемах, масштабировании, производительности, транзакциях и типичных сценариях использования.
Материал сопровождается понятными схемами, примерами запросов и сравнительными таблицами, поэтому отлично подойдет как новичкам, так и разработчикам, которые готовятся к собеседованиям или изучают System Design.
👉 @SQLPortal
Postgres CONCAT_WS удобно собирает строку даже если есть NULL:
SELECT CONCAT_WS(' ', first_name, middle_initial, last_name);John T Smith
John Smith
Золотое правило SQL: Всегда используйте WHERE перед GROUP BY.
Неправильно:
SELECT Department, COUNT(*)
FROM Employees
GROUP BY Department
WHERE Salary > 50000;
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
300+ практических задач: подарок тем, кто изучает SQL
Если хотите научиться писать SQL не только по теории, но и на практике, попробуйте SQL Climber.
Платформа предлагает более 300 интерактивных заданий разного уровня сложности от простых SELECT-запросов до более сложных тем с JOIN, агрегатными функциями и подзапросами.
Каждое задание проверяется автоматически, поэтому можно сразу увидеть результат и исправить ошибки. Отличный ресурс для новичков, подготовки к собеседованиям и регулярной практики SQL.
👉 @SQLPortal
НОВОЕ: Durable Functions в PostgreSQL
pg_durable это расширение для PostgreSQL. Состояние рабочего процесса (workflow), очередь, повторные попытки и восстановление хранятся в Postgres, а для обеспечения надёжности, высокой доступности (HA), резервного копирования и восстановления используются встроенные возможности Postgres.
👉 @SQLPortal
Ловите исчерпывающее руководство по подготовке к SQL собеседованию
Если впереди SQL-собес и руки уже холодеют от волнения — не парься! В этом гайде собраны топовые вопросы, разборы и лайфхаки, которые помогут уверенно писать запросы и понимать, что от тебя хотят рекрутеры
Всё по полочкам и максимально доступно 📚
👉 @SQLPortal
SQL-совет, который должен знать каждый новичок
Используйте возможности оператора WHERE.
Вместо того чтобы загружать все данные о продажах компании, сразу отфильтруйте только нужные записи:
SELECT * FROM sales
WHERE region = 'Abuja'
AND year = 2026;
WHERE там, где это возможно, сделает ваши SQL-запросы более эффективными и профессиональными.
Руководство по SQL
Это руководство охватывает различные аспекты, начиная с основ SQL и до более сложных тем.
Материал дополнен практическими примерами, которые способствуют лучшему усвоению информации.
👉 @SQLPortal