Создавайте blockchain-таблицы в Oracle Database с помощью
Эти параметры:
- разрешают INSERT,
- запрещают UPDATE,
- запрещают DELETE/DROP до истечения заданного количества дней (N).
👉 @SQLPortal
CREATE BLOCKCHAIN TABLE ... ( ... )
NO DROP UNTIL n DAYS IDLE
NO DELETE UNTIL n DAYS AFTER INSERT
HASHING USING SHA2_512 VERSION "v1"
Эти параметры:
- разрешают INSERT,
- запрещают UPDATE,
- запрещают DELETE/DROP до истечения заданного количества дней (N).
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
This media is not supported in your browser
VIEW IN TELEGRAM
Postgres: процесс-на-соединение
MySQL: поток-на-соединение
Узнайте больше о процессах, потоках, пуле соединений и о том, как они влияют на производительность базы данных — читать
@SQLPortal
MySQL: поток-на-соединение
Узнайте больше о процессах, потоках, пуле соединений и о том, как они влияют на производительность базы данных — читать
@SQLPortal
❤8
На GitHub появился новый проект SQLBot — база данных без SQL. 😱
Всего за несколько дней он собрал 1.5K ★
SQLBot умеет отвечать на вопросы на естественном языке, поддерживает MySQL, SQL Server, ClickHouse, RedShift и даже Excel/CSV.
Встроена авто-визуализация, прогнозы и простая установка через Docker.
SQLBot на GitHub
👉 @SQLPortal
Всего за несколько дней он собрал 1.5K ★
SQLBot умеет отвечать на вопросы на естественном языке, поддерживает MySQL, SQL Server, ClickHouse, RedShift и даже Excel/CSV.
Встроена авто-визуализация, прогнозы и простая установка через Docker.
SQLBot на GitHub
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍4
This media is not supported in your browser
VIEW IN TELEGRAM
Индексирование полнотекстового поиска с подстановочными символами в Postgres? Вот практическое видео, которое показывает, как использовать pg_trgm и GIN-индексы
👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍4
Бесплатный курс по SQL от Baraa Khatib Salkini, известного как DataWithBaraa. Курс охватывает всё от основ до сложных запросов и реальных проектов. 🤑
В GitHub-репозитории есть datasets/ с реальными данными из ERP и CRM, scripts/ с готовыми SQL-скриптами для практики и docs/ с документацией и материалами курса.
Ссылка на курс
👉 @SQLPortal
В GitHub-репозитории есть datasets/ с реальными данными из ERP и CRM, scripts/ с готовыми SQL-скриптами для практики и docs/ с документацией и материалами курса.
Ссылка на курс
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - DataWithBaraa/sql-ultimate-course: The most comprehensive SQL guide from a real-world expert! Learn everything from basics…
The most comprehensive SQL guide from a real-world expert! Learn everything from basics to advanced queries, optimizations, and real-world SQL - DataWithBaraa/sql-ultimate-course
❤6🔥3
Совет для Postgres: используйте
👉 @SQLPortal
jsonb_pretty, чтобы выводить JSON в удобочитаемом вертикальном виде.Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3
Типы связей в базах данных:
Связи показывают, как данные между собой связаны.
Три основных типа связей:
Один к одному (One-to-One) —> запись в одной таблице связана с одной записью в другой таблице.
Один ко многим (One-to-Many) —> запись в одной таблице связана с несколькими записями в другой таблице.
Многие ко многим (Many-to-Many) —> записи в обеих таблицах могут быть связаны с несколькими записями в другой таблице.
👉 @SQLPortal
Связи показывают, как данные между собой связаны.
Три основных типа связей:
Один к одному (One-to-One) —> запись в одной таблице связана с одной записью в другой таблице.
Один ко многим (One-to-Many) —> запись в одной таблице связана с несколькими записями в другой таблице.
Многие ко многим (Many-to-Many) —> записи в обеих таблицах могут быть связаны с несколькими записями в другой таблице.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3
Простое объяснение Primary Key и Foreign Key в SQL:
Primary Key (PK) это уникальный идентификатор записи в таблице. В таблице customers поле customer_id является первичным ключом. Каждому клиенту присваивается уникальный номер, и два клиента не могут иметь одинаковый ID. Sarah Johnson всегда будет клиентом с ID 1001, а если завтра зарегистрируется другая Sarah Johnson, ей дадут другой ID. Это помогает организовать данные и избежать путаницы.
Foreign Key (FK) это связь между таблицами, как мост. В таблице orders поле customer_id является внешним ключом. Здесь он не уникален, потому что один клиент может сделать несколько заказов. Например, Sarah (customer 1001) сделала два заказа — на ноутбук и на клавиатуру. Внешний ключ customer_id в таблице orders ссылается на первичный ключ в таблице customers.
Без внешнего ключа пришлось бы хранить имя и email Сары в каждой записи заказа, что создаёт хаос и занимает лишнее место. Используя FK, данные клиента хранятся один раз в таблице customers, а в таблице orders просто ссылаются на него через ID. Это делает систему чистой, эффективной и масштабируемой.
PK уникально идентифицирует запись, а FK соединяет связанные данные между таблицами.
👉 @SQLPortal
Primary Key (PK) это уникальный идентификатор записи в таблице. В таблице customers поле customer_id является первичным ключом. Каждому клиенту присваивается уникальный номер, и два клиента не могут иметь одинаковый ID. Sarah Johnson всегда будет клиентом с ID 1001, а если завтра зарегистрируется другая Sarah Johnson, ей дадут другой ID. Это помогает организовать данные и избежать путаницы.
Foreign Key (FK) это связь между таблицами, как мост. В таблице orders поле customer_id является внешним ключом. Здесь он не уникален, потому что один клиент может сделать несколько заказов. Например, Sarah (customer 1001) сделала два заказа — на ноутбук и на клавиатуру. Внешний ключ customer_id в таблице orders ссылается на первичный ключ в таблице customers.
Без внешнего ключа пришлось бы хранить имя и email Сары в каждой записи заказа, что создаёт хаос и занимает лишнее место. Используя FK, данные клиента хранятся один раз в таблице customers, а в таблице orders просто ссылаются на него через ID. Это делает систему чистой, эффективной и масштабируемой.
PK уникально идентифицирует запись, а FK соединяет связанные данные между таблицами.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5
В Postgres 18 появились виртуальные вычисляемые колонки
Если убрать ключевое слово stored в определении, колонка не будет храниться на диске, а будет вычисляться на лету.
Это экономит место и не замедляет записи, но может замедлять чтение, так что использовать стоит с умом.
👉 @SQLPortal
Если убрать ключевое слово stored в определении, колонка не будет храниться на диске, а будет вычисляться на лету.
Это экономит место и не замедляет записи, но может замедлять чтение, так что использовать стоит с умом.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍4
Получение значений из первой, N-й и последней строки:
FIRST_VALUE ⇒ первая
NTH_VALUE ⇒ N-я
LAST_VALUE ⇒ последняя
По умолчанию окно заканчивается на текущей строке ⇒
NTH_VALUE(v, N) возвращает NULL для строк до N
LAST_VALUE возвращает последнее значение с тем же sort key, а не из самой последней строки
👉 @SQLPortal
FIRST_VALUE ⇒ первая
NTH_VALUE ⇒ N-я
LAST_VALUE ⇒ последняя
По умолчанию окно заканчивается на текущей строке ⇒
NTH_VALUE(v, N) возвращает NULL для строк до N
LAST_VALUE возвращает последнее значение с тем же sort key, а не из самой последней строки
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Карен Джекс поделилась свежим материалом о партиционировании в Postgres.
Ранее она выступила с этим докладом на Euroko, а теперь опубликовала подробный блог с разбором примера и практическими рекомендациями по эффективному использованию партиционирования.
https://karenjex.blogspot.com/2025/09/postgres-partitioning-best-practices.html
👉 @SQLPortal
Ранее она выступила с этим докладом на Euroko, а теперь опубликовала подробный блог с разбором примера и практическими рекомендациями по эффективному использованию партиционирования.
https://karenjex.blogspot.com/2025/09/postgres-partitioning-best-practices.html
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Pro-tip по дизайну БД: Soft Deletes
Soft delete — вместо того чтобы физически удалять строку, мы помечаем её как удалённую (например,
Плюсы:
- удобно для undo (отката);
- хранение истории ;
- не ломаются внешние ключи.
Но!🚬
Если напрямую писать запросы к таблице, половина кода будет забывать исключать «удалённые» строки. В итоге поведение приложения становится непредсказуемым и разъезжается в разных местах.
Решение
Всегда создавай view, которое сразу фильтрует «живые» строки.
Разработчики по умолчанию работают именно с view, а к базовой таблице обращаются только когда реально нужны «удалённые» данные.
Делай «безопасный путь» простым и привычным.
👉 @SQLPortal
Soft delete — вместо того чтобы физически удалять строку, мы помечаем её как удалённую (например,
deleted_at TIMESTAMP). Плюсы:
- удобно для undo (отката);
- хранение истории ;
- не ломаются внешние ключи.
Но!
Если напрямую писать запросы к таблице, половина кода будет забывать исключать «удалённые» строки. В итоге поведение приложения становится непредсказуемым и разъезжается в разных местах.
Решение
Всегда создавай view, которое сразу фильтрует «живые» строки.
CREATE VIEW users_active AS
SELECT * FROM users WHERE deleted_at IS NULL;
Разработчики по умолчанию работают именно с view, а к базовой таблице обращаются только когда реально нужны «удалённые» данные.
Делай «безопасный путь» простым и привычным.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥5❤2
Автоматизируйте задачи в Postgres с помощью pg_cron. Этот инструмент позволяет по расписанию запускать простые задачи, например VACUUM или пересборку материализованных представлений.
👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍4🔥3
Чтобы кешировать результаты вызовов функций в PL/SQL, объявляйте их с модификаторами:
DETERMINISTIC ⇒ кеширование в пределах одного SQL-выражения
RESULT_CACHE ⇒ кеширование между сессиями
Перед использованием убедитесь, что функции имеют ограниченное количество уникальных входных данных и действительно являются детерминированными.
https://mikesmithers.wordpress.com/2022/10/16/deterministic-and-result_cache-pl-sql-functions/
👉 @SQLPortal
DETERMINISTIC ⇒ кеширование в пределах одного SQL-выражения
RESULT_CACHE ⇒ кеширование между сессиями
Перед использованием убедитесь, что функции имеют ограниченное количество уникальных входных данных и действительно являются детерминированными.
https://mikesmithers.wordpress.com/2022/10/16/deterministic-and-result_cache-pl-sql-functions/
Please open Telegram to view this post
VIEW IN TELEGRAM
The Anti-Kyte
DETERMINISTIC and RESULT_CACHE PL/SQL functions
Recent events here in the UK have once again emphasised the value of being careful with your “cache”. To this end, I’m going to take a look at how PL/SQL functions defined using t…
👍4❤2
Совет по Postgres для тестирования расширений:
Можно использовать команду LOAD, чтобы подгрузить общие библиотеки только в рамках текущей сессии, вместо изменения shared_preload_libraries и перезапуска Postgres.
👉 @SQLPortal
Можно использовать команду LOAD, чтобы подгрузить общие библиотеки только в рамках текущей сессии, вместо изменения shared_preload_libraries и перезапуска Postgres.
LOAD 'auto_explain';
LOAD 'pg_stat_statements';
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3
Индексируйте скалярные значения в массивах JSON, хранящихся в Oracle Database, с помощью
Оптимизатор может использовать такие индексы при поиске по массиву с помощью
👉 @SQLPortal
CREATE MULTIVALUE INDEX ... ON t ( t.json_data.array.<type> )
Оптимизатор может использовать такие индексы при поиске по массиву с помощью
JSON_EXISTS ( t.json_data, '$.array?(@.<type> == ... )' )
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3
Где разместить базу данных бесплатно
Актуальные бесплатные платформы на сегодня ↓
🟢 MongoDB Atlas
MongoDB — 512 МБ, автоматические бэкапы
→ mongodb.com
🟢 Neon Tech
PostgreSQL — 500 МБ, 190 часов вычислений
→ neon.tech
🟢 FreeDB Tech
MySQL — 25 МБ, максимум 200 подключений
→ freedb.tech
🟢 Turso
SQLite — 5 ГБ, до 500 миллионов чтений
→ turso.tech
🟢 Upstash
Redis — 256 МБ, 500 000 команд
→ upstash.com
🟢 Xata
PostgreSQL — 15 ГБ, безлимитный трафик
→ lite.xata.io
🟢 Supabase
PostgreSQL — 500 МБ, 5 ГБ трафика
→ supabase.com
🟢 CockroachDB
10 ГБ хранилища, 50 млн запросов
→ cockroachlabs.com
🟢 Koyeb
PostgreSQL — 1 ГБ, 5 часов выполнения
→ koyeb.com
👉 @SQLPortal
Актуальные бесплатные платформы на сегодня ↓
MongoDB — 512 МБ, автоматические бэкапы
→ mongodb.com
PostgreSQL — 500 МБ, 190 часов вычислений
→ neon.tech
MySQL — 25 МБ, максимум 200 подключений
→ freedb.tech
SQLite — 5 ГБ, до 500 миллионов чтений
→ turso.tech
Redis — 256 МБ, 500 000 команд
→ upstash.com
PostgreSQL — 15 ГБ, безлимитный трафик
→ lite.xata.io
PostgreSQL — 500 МБ, 5 ГБ трафика
→ supabase.com
10 ГБ хранилища, 50 млн запросов
→ cockroachlabs.com
PostgreSQL — 1 ГБ, 5 часов выполнения
→ koyeb.com
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4
Как добиться index-only scan в Postgres?
Используйте covering indexes (покрывающие индексы).
Этот запрос можно полностью покрыть индексом:
Так Postgres сможет получить все нужные данные прямо из индекса, не обращаясь к таблице.
Хотите логировать действительно долгие запросы?
Можно настроить auto_explain так, чтобы он логировал только запросы, превышающие заданное время выполнения:
Это позволит автоматически сохранять планы выполнения только для запросов, которые работают дольше 1 секунды.
👉 @SQLPortal
Используйте covering indexes (покрывающие индексы).
SELECT name, email FROM web_users WHERE id = 123;
Этот запрос можно полностью покрыть индексом:
CREATE INDEX idx_users_includes
ON web_users (id)
INCLUDE (name, email);
Так Postgres сможет получить все нужные данные прямо из индекса, не обращаясь к таблице.
Хотите логировать действительно долгие запросы?
Можно настроить auto_explain так, чтобы он логировал только запросы, превышающие заданное время выполнения:
auto_explain.log_min_duration = '1000ms';
Это позволит автоматически сохранять планы выполнения только для запросов, которые работают дольше 1 секунды.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍7
Скрытые возможности PostgreSQL
В материале автор делится пятью возможностями, о которых редко говорят в сообществе PostgreSQL. Среди них — GRANT SELECT, DISTINCT ON, ограничения EXCLUDE и другие интересные приемы.
Читать статью: тык
👉 @SQLPortal
В материале автор делится пятью возможностями, о которых редко говорят в сообществе PostgreSQL. Среди них — GRANT SELECT, DISTINCT ON, ограничения EXCLUDE и другие интересные приемы.
Читать статью: тык
Please open Telegram to view this post
VIEW IN TELEGRAM
Хабр
Пять возможностей PostgreSQL, о которых редко вспоминают
Привет, Хабр! Постгрес – не просто реляционная БД, а настоящий кладезь фич, о которых начинающий разработчик может и не догадываться. Всё началось с того, что PostgreSQL изначально писался на С/C++ и...
👍5
На GitHub опубликован бесплатный «6-недельный дорожный план по SQL для Data Science / аналитики»
Проект предлагает по неделе на ключевые темы: основы SQL и SELECT, агрегаты и GROUP BY, JOIN-ы, оконные функции, CTE и подзапросы, а затем — самостоятельные проекты для закрепления навыков😎
👉 @SQLPortal
Проект предлагает по неделе на ключевые темы: основы SQL и SELECT, агрегаты и GROUP BY, JOIN-ы, оконные функции, CTE и подзапросы, а затем — самостоятельные проекты для закрепления навыков
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - andresvourakis/free-6-week-sql-roadmap-data-science: A roadmap to guide you through mastering SQL for Data Science in…
A roadmap to guide you through mastering SQL for Data Science in just 6 weeks for free - andresvourakis/free-6-week-sql-roadmap-data-science
❤7
На официальной вики PostgreSQL опубликована статья “Don’t Do This”, где собраны типичные ошибки при работе с базой данных и объясняется, почему их стоит избегать
👉 @SQLPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8