SQL Ready | Базы Данных
15.4K subscribers
1.2K photos
66 videos
2 files
577 links
Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

РКН: https://clck.ru/3QREBc

Реклама на бирже: https://telega.in/c/sql_ready
Download Telegram
MERGE: атомарная вставка или обновление!

Оператор MERGE позволяет реализовать обновление данных и вставку новых записей в рамках одной операции. Это особенно важно при обработке данных, поступающих из внешних систем, где часть ключей может совпадать, а часть — быть новыми.

Создаём таблицу:
CREATE TABLE clients (
id NUMBER PRIMARY KEY,
name VARCHAR2(200) NOT NULL,
email VARCHAR2(200) UNIQUE NOT NULL,
updated_at DATE DEFAULT SYSDATE NOT NULL
);


Подготавливаем входящие данные с помощью CTE:
WITH incoming AS (
SELECT 10 AS id,
'Ivan Petrov' AS name,
'ivan@example.com' AS email
FROM dual
)


Здесь мы формируем набор входных данных, который будет использован оператором MERGE как источник.

Теперь выполняем MERGE, используя CTE как таблицу-источник:
MERGE INTO clients c
USING incoming i
ON (c.id = i.id)
WHEN MATCHED THEN
UPDATE SET
c.name = i.name,
c.email = i.email,
c.updated_at = SYSDATE
WHEN NOT MATCHED THEN
INSERT (id, name, email, updated_at)
VALUES (i.id, i.name, i.email, SYSDATE);


Операция выполняется одной DML-командой, что исключает необходимость выполнять отдельный SELECT.

Проверяем результат:
SELECT * FROM clients WHERE id = 10;


🔥 Пример выше предназначен для Oracle. Оператор MERGE также поддерживается в SQL Server, DB2, Snowflake, BigQuery и PostgreSQL 15+. Синтаксис в разных СУБД может отличаться.

➡️ SQL Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍137🤝7
🖥 Сколько денег теряет продукт, когда система “лежит”?

Когда продукт недоступен, каждая минута стоит денег: падают заказы, транзакции не проходят, пользователи уходят.

Сегодня в задаче:
Выделим непрерывные последовательности ошибок, чтобы отделить реальные инциденты от разовых сбоев.

Посчитаем длительность каждого инцидента на основе временных меток, получим время недоступности сервиса.

Оценим финансовый ущерб, умножив длительность простоя на среднюю выручку в минуту”.


Отчет позволяет не просто зафиксировать сбои, но и посчитать ущерб от каждого окна простоя.

➡️ SQL Ready | #задача
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍9🔥7🤝2
😁20🔥10👍6
Нужно понять, какие строки изменились с прошлого дня?

Не обязательно хранить историю, можно сравнить сами строки по хешу.

Соберем все поля строки в единый структурированный объект:
row(id, email, status, updated_at)


И посчитаем хеш от всей строки:
md5(row(... )::text)


Теперь можно сравнить два снапшота:
SELECT u_new.id
FROM users_new u_new
JOIN users_old u_old ON u_old.id = u_new.id
WHERE md5(row(u_new.*)::text) <> md5(row(u_old.*)::text);


Если нужно показать, что именно изменилось, добавьте JSON-представление строки:
row_to_json(u_new.*)


🔥 Работает на разных объёмах данных без транзакционных логов.

➡️ SQL Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥97🤝2
🖥 Функции преобразования данных в MySQL!

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

➡️ SQL Ready | #шпора
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥148👍8🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ Essential SQL — это обучающий ресурс для тех, кто хочет освоить язык SQL с нуля!

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

📌 Оставляю ссылочку: essentialsql.com

➡️ SQL Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥108🤝5👍3
🖥 Bitmap Scan — быстрые выборки по нескольким фильтрам!

Когда фильтры задействуют несколько индексов, Index Scan может работать неэффективно. Bitmap Scan объединяет результаты этих индексов и читает только нужные страницы.

Сегодня в гайде:
Как bitmap объединяет несколько индексов;

Что означает BitmapAnd в плане выполнения;

Почему эта техника ускоряет сложные фильтры на больших таблицах.


Прием позволяет эффективно обрабатывать сложные фильтры и стабильно работать с большими таблицами.

➡️ SQL Ready | #гайд
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1310🔥9