SQL Portal | Базы Данных
14.4K subscribers
610 photos
83 videos
41 files
505 links
Присоединяйтесь к нашему каналу и погрузитесь в мир баз данных

Связь: @devmangx

РКН: https://clck.ru/3H4Wo3
Download Telegram
В SQL можно писать циклы без циклов!

Ты знал, что SQL умеет рекурсивно создавать данные без таблиц?

Вот, например, как сделать последовательность чисел от 1 до 100 без LOOP, WHILE и даже без исходной таблицы:

WITH RECURSIVE numbers AS (
SELECT 1 AS n
UNION ALL
SELECT n + 1 FROM numbers WHERE n < 100
)
SELECT * FROM numbers;


WITH RECURSIVE создает временную таблицу.
Начинаем с 1.
В UNION ALL прибавляем 1 на каждой итерации.
Останавливаемся на 100.

Если было полезно — жду твоего 🔥

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥467👍7
Современные типы архитектуры данных

Ссылка: клик

👉 @SQLPortal | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31🏆1
Оператор INSERT INTO SELECT в SQL

Оператор INSERT INTO SELECT используется для копирования данных из одной таблицы в другую. Это удобно, когда нужно перенести данные или создать их резервную копию.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🔥6
Переливаем таблицы БД между средами

Ссылка: клик

👉 @SQLPortal | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2
🖥 Фишка: Динамическое скользящее окно по времени!

Обычно SUM() OVER() считает всё подряд, но что если нам нужна сумма только за последние N дней, без геморроя?

Решение – используем RANGE BETWEEN INTERVAL! 👇

SELECT 
user_id,
transaction_date,
amount,
SUM(amount) OVER (
PARTITION BY user_id
ORDER BY transaction_date
RANGE BETWEEN INTERVAL '7 days' PRECEDING AND CURRENT ROW
) AS rolling_sum
FROM transactions;


Считаем сумму только за последние 7 дней перед каждой транзакцией!
Не надо писать подзапросы – SQL сам всё оптимизирует!
Работает на любой временной аналитике (продажи, активность, балансы и т.д.)

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍11🤯3
Преимущества PostgreSQL перед Oracle DB

Ссылка: клик

👉 @SQLPortal | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1🌭1
SQL-фишка, которая сразит наповал: LATERAL (или CROSS APPLY)

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

Работает быстрее и чище, чем GROUP BY + MAX. Рекомендуется для любых построчных подзапросов.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍206👀4🔥3
Разбор вопроса с собеседования: SQL-запрос для выборки данных по условию

На собеседованиях по SQL часто встречаются задачи, связанные с использованием шаблонов и фильтрации данных. Рассмотрим один из таких вопросов

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍164🔥3
Master_SQL.pdf
754.9 KB
Руководство по SQL 🔥

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

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

Сохраняйте, чтобы не потерять

👉 @SQLPortal | #ресурсы
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3😁2
Топ-10 техник масштабирования баз данных, которые вам стоит знать:

🍩Индексирование: Создавайте индексы на часто запрашиваемых столбцах, чтобы ускорить извлечение данных.

🍩Вертикальное масштабирование: Обновите сервер базы данных, добавив больше процессора, ОЗУ или хранилища для обработки увеличенной нагрузки.

🍩Кэширование: Храните часто запрашиваемые данные в памяти (например, Redis, Memcached), чтобы снизить нагрузку на базу данных и улучшить время отклика.

🍩Шардинг: Распределяйте данные по нескольким серверам, разделив базу данных на более мелкие независимые шардированные части, что позволяет достичь горизонтального масштабирования и улучшенной производительности.

🍩Репликация: Создавайте несколько копий (реплик) базы данных на разных серверах, позволяя распределять запросы на чтение по репликам и улучшая доступность.

🍩Оптимизация запросов: Тщательно настраивайте SQL-запросы, избегайте дорогих операций и эффективно используйте индексы для улучшения скорости выполнения и снижения нагрузки на базу данных.

🍩Пуллинг соединений: Снижайте накладные расходы на открытие/закрытие соединений с базой данных, повторно используя существующие соединения, что улучшает производительность при высоком трафике.

🍩Вертикальное партиционирование: Разделите большие таблицы на более мелкие, более управляемые части (партиции), каждая из которых содержит подмножество столбцов из исходной таблицы.

🍩Денормализация: Храните данные в избыточном, но структурированном формате, чтобы минимизировать сложные объединения и ускорить работу с запросами, ориентированными на чтение.

🍩🍩Материализованные представления: Предварительно вычисляйте и храните результаты сложных запросов как отдельные таблицы, чтобы избежать дорогостоящих перерасчетов, уменьшив нагрузку на базу данных и улучшив время отклика.


Сохраняй чтобы не забыть!

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍122🔥1
Что нужно знать, чтобы писать быстрые SQL-запросы?

📖 Читать: ссылка

👉 @SQLPortal | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
7🔥2
💡 SQL фишка

Для фильтрации агрегированных данных используйте HAVING вместо WHERE. Это позволяет фильтровать данные после агрегации, что невозможно сделать с WHERE.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥196
Понимание ключей в базах данных

В SQL ключи помогают гарантировать целостность данных и предотвращают дублирование.

Primary Key
Уникально идентифицирует каждую строку в таблице.

Candidate Key
Набор атрибутов, который может быть первичным ключом.

Alternate Key
Кандидатный ключ, который не был выбран в качестве первичного.

Foreign Key
Связывает таблицы между собой, обеспечивая ссылочную целостность.

Unique Key
Гарантирует уникальность значения в столбце, но допускает NULL.

Super Key
Любой набор атрибутов, уникально идентифицирующий строку.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥6
💡 SQL-запрос: преобразуем имена в нижний регистр!

Нужно получить имена сотрудников из таблицы EmployeeDetail в нижнем регистре 👇

SELECT LOWER(FirstName) AS [First Name] FROM EmployeeDetail


Используйте LOWER() для приведения строк к нижнему регистру, а AS — для переименования столбца.

👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥5
Триггеры в PostgreSQL: основы

📖 Читать: ссылка

👉 @SQLPortal | #cтатья
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥3
💡 Хотите анализировать изменения без сложных JOIN-ов? Используйте оконные функции, например, LAG().

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

Можно даже отслеживать тренды:

SELECT 
sales_date,
product_id,
sales_amount,
CASE
WHEN sales_amount > LAG(sales_amount) OVER (PARTITION BY product_id ORDER BY sales_date)
THEN 'Рост' ELSE 'Падение'
END AS trend
FROM sales;


👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥7