uk
Feedback

Не попадись на ботовода! Telemetrio знаходить і позначає такі канали мітками 👉 Хочеш бачити мітку, оформляй підписку

Data Science. SQL hub

Data Science. SQL hub

Відкрити в Telegram

По всем вопросам- @workakkk @itchannels_telegram - 🔥лучшие ит-каналы @ai_machinelearning_big_data - Machine learning @pythonl - Python @pythonlbooks- python книги📚 @datascienceiot - ml книги📚 РКН: https://vk.cc/cIi9vo #VRHSZ

Показати більше

📈 Аналітичний огляд Telegram-каналу Data Science. SQL hub

Канал Data Science. SQL hub (@sqlhub) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 36 048 підписників, посідаючи 3 729 місце в категорії Технології та додатки та 17 585 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 36 048 підписників.

За останніми даними від 05 листопада, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на 75, а за останні 24 години на -7, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 9.27%. Протягом перших 24 годин після публікації контент зазвичай збирає 3.91% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 3 342 переглядів. Протягом першої доби публікація в середньому набирає 1 408 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 8.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як sql, индекс, postgres, index, sqlite.

📝 Опис та контентна політика

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“По всем вопросам- @workakkk @itchannels_telegram - 🔥лучшие ит-каналы @ai_machinelearning_big_data - Machine learning @pythonl - Python @pythonlbooks- python книги📚 @datascienceiot - ml книги📚 РКН: https://vk.cc/cIi9vo #VRHSZ”

Завдяки високій частоті оновлень (останні дані отримано 06 листопада, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

36 048
Підписники
-724 години
-587 днів
+7530 днів
Архів дописів
🖥 Продвинутые темы SQL для дата-инженеров Дата-инженер контролирует и анализирует большие наборы данных. SQL — мощный инструмент выполнения запросов и манипулирования данными, и для создания эффективных решений здесь имеется немало продвинутых функциональных средств. Рассмотрим ряд важных для дата-инженеров тем SQL, иллюстрируя их примерами применения набора данных. Пример набора данных Имеется три таблицы: • product_table с данными различных продуктов — название, цена, категория; • category_table с данными о категориях продуктов; • order_table с данными о заказах: заказанный продукт, его количество, дата заказа. Вот схема каждой таблицы: product_table +----+----------------------+-------+-------------+ | id | Название | Цена | category_id | +----+----------------------+-------+-------------+ | 1 | iPhone 13 | 1000 | 2 | | 2 | Galaxy S21 | 800 | 2 | | 3 | Pixel 6 | 700 | 2 | | 4 | MacBook Air | 1000 | 4 | | 5 | Surface Pro 8 | 1200 | 4 | | 6 | iPad Pro | 800 | 3 | | 7 | iPad Mini | 400 | 9 | | 8 | Smart TV | 800 | 1 | | 9 | Home Theater System | 600 | 1 | | 10 | Galaxy S21 Ultra | 1400 | 2 | | 11 | iPhone 13 Pro Max | 1300 | 2 | | 12 | Pixel 6 Pro | 1000 | 2 | +----+----------------------+-------+-------------+ category_table +----+-------------+ | id | Название | +----+-------------+ | 1 | Электроника | | 2 | Телефоны | | 3 | Планшеты | | 4 | Ноутбуки | | 5 | Бытовая техника | | 6 | Одежда | | 7 | Спорттовары | | 8 | Игрушки | | 9 | Аксессуары | +----+-------------+ order_table +----+------------+-------------+------------+ | id | product_id | Количество | Дата | +----+------------+-------------+------------+ | 1 | 1 | 2 | 2022-03-28 | | 2 | 2 | 1 | 2022-03-28 | | 3 | 3 | 3 | 2022-03-29 | | 4 | 4 | 1 | 2022-03-30 | | 5 | 5 | 2 | 2022-03-31 | | 6 | 6 | 3 | 2022-03-31 | | 7 | 7 | 2 | 2022-03-31 | | 8 | 8 | 1 | 2022-03-31 | | 9 | 9 | 1 | 2022-03-31 | +--------------------------------------------+ Фильтрация данных Предложение WHERE — это важный SQL-функционал для фильтрования данных по конкретным условиям. WHERE, которым определяется условие включения данных в результаты, добавляется в конце оператора SELECT. Пример. Чтобы получить все продукты дороже 1000 $, применяем WHERE для их фильтрации по цене, в результаты включаются только продукты дороже 1000 $: SELECT * FROM product_table WHERE price > 1000; Возвращаемый результат: +----+---------------------+-------+-------------+ | id | Название | Цена | category_id | +----+---------------------+-------+-------------+ | 5 | Surface Pro 8 | 1200 | 4 | | 10 | Galaxy S21 Ultra | 1400 | 2 | | 11 | iPhone 13 Pro Max | 1300 | 2 | +----+---------------------+-------+-------------+ Объединения Чтобы иметь полную картину о данных нескольких таблиц, эти таблицы объединяют. Для этого в SQL имеются внутренние, левые, правые и полные внешние объединения. Пример. Чтобы получить список всех заказов и название заказанного продукта, с помощью объединения в SQL объединяем таблицы: в одной данные о заказе, в другой — о продукте: SELECT order_table.*, product_table.name FROM order_table INNER JOIN product_table ON order_table.product_id = product_table.id; 📌 Читать дальше @data_analysis_ml

🔥 Полезная Шпаргалка-гайд по работе с Python и PostgreSQL. Все от установки и соединение с БД до создания таблиц и работы с полями. @sqlhub

Хотите дорасти до уверенного Middle Data Engineer, но текущего стека не хватает? На курсе «Инженер данных» от karpovꓸcourses
Хотите дорасти до уверенного Middle Data Engineer, но текущего стека не хватает?  На курсе «Инженер данных» от karpovꓸcourses опытные специалисты из VK, Яндекс Go, Sbermarket и Ozon помогут дополнить ваш арсенал современными инструментами для хранения и обработки больших данных. За 5 месяцев вы научитесь: ● Работать с реляционными и MPP базами данных ● Автоматизировать ETL-пайплайны ● Проектировать традиционные и облачные хранилища ● Применять ML-модели на больших данных ● Строить дашборды для мониторинга DWH платформы Здесь вас ждут интересные проекты и настоящая инфраструктура: Greenplum, Hadoop, Kubernetes, Spark, Hive, Kafka, Airflow, Tableau.  По итогам обучения вы станете крепким Middle специалистом с широким набором прикладных навыков, а наш HR доведёт вас до оффера в хорошую компанию. Стартуем 10 августа. Ждём вас на курсе! [Записаться]

🖥 NoSQL: виды, особенности и применение NoSQL — это семейство нереляционных баз данных. В них разработчики отошли от использ
🖥 NoSQL: виды, особенности и применение NoSQL — это семейство нереляционных баз данных. В них разработчики отошли от использования традиционной табличной модели представления информации. • Уже само название заявляет, что управлять данными можно не только с помощью Structured Query Language (SQL), т. е. языка структурированных запросов. • Модель NoSQL появилась в ответ на необходимость оперативно обрабатывать действительно огромные объёмы данных. Поэтому NoSQL по большей части заточена под масштабирование по горизонтали и работу с недостаточно структурированными или постоянно меняющимися данными. Почему появилась модель NoSQL Расцвет реляционных (relation — «связь, взаимосвязь») баз данных пришёлся на 80-е годы, когда в БД в основном хранили текстовые документы и изображения. Однако с развитием технологий и ростом объёма обрабатываемой информации реляционные СУБД перестали справляться со всеми задачами одинаково хорошо. Термин NoSQL впервые прозвучал в 1998 году: его применил итальянский учёный Карло Строцци для описания своей open source СУБД. При разработке он отказался от SQL, а также от основного принципа реляционных СУБД — ACID (atomicity, consistency, isolation, durability). В начале XXI века NoSQL БД стали популярны, в том числе у корпораций. Чтобы решить проблемы параллельных вычислений с очень большим объёмом информации и масштабируемости, Google построила на основе модели распределённых вычислений MapReduce колоночное хранилище. На базе этих технологий выросло целое семейство высокодоступных open source СУБД. Основные причины появления NoSQL: 📌 Читать @sqlhub

⚡️Маст-хэв список для программистов, каналы с последними книжными новинками, библиотеками, разбором кода и актуальной информацией, связанной с вашим языком программирования. Лучший способ получать свежие обновлении и следить за трендами в разработке. Машинное обучение: t.me/ai_machinelearning_big_data Python: t.me/pythonl C#: t.me/csharp_ci C/C++/ t.me/cpluspluc Data Science: t.me/data_analysis_ml Devops: t.me/devOPSitsec Go: t.me/Golang_google Базы данных: t.me/sqlhub Rust: t.me/rust_code Javascript: t.me/javascriptv React: t.me/react_tg PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Linux: t.me/+A8jY79rcyKJlYWY6 Big Data: t.me/bigdatai Хакинг: t.me/linuxkalii Тестирование: https://t.me/+F9jPLmMFqq1kNTMy Java: t.me/javatg 💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка машинное обучение: https://t.me/addlist/_FjtIq8qMhU0NTYy 📕 Бесплатные Книги для программистов: https://t.me/addlist/YZ0EI8Ya4OJjYzEy 🎞 YouTube канал: https://www.youtube.com/@uproger 😆ИТ-Мемы: t.me/memes_prog 🇬🇧Английский: t.me/english_forprogrammers

🤓 Набор обучающих материалов по базам данных 1. Статьи. 2. Блоги. 3. Курсы. 4. Выступления. 5. Книги. Дает возможность углуб
🤓 Набор обучающих материалов по базам данных 1. Статьи. 2. Блоги. 3. Курсы. 4. Выступления. 5. Книги. Дает возможность углубленно изучить работу с базами данных. 👇 📌 GitHub @Sqlhub

🖥 [Тестовое Тинькофф] Звонки по дням Дано Дана следующая структура таблиц: Задание Напишите запрос, который посчитает количе
🖥 [Тестовое Тинькофф] Звонки по дням Дано Дана следующая структура таблиц: Задание Напишите запрос, который посчитает количество звонков, сделанных между 2020-10-01 и сегодняшним днем. Полученная таблица должна состоять из двух столбцов: date и cnt_calls. В столбце date должен находиться день вызова (без времени), а в столбце "cnt_calls" должно отображаться количество звонков, совершенных в этот день. Столбцы в результате date cnt_calls Примечание: для корректной работы вашего запроса обязательно указывайте схему таблиц - tinkoff. Например, FROM tinkoff.employees. Пишите свое решение в комментариях👇 @sqlhub

Станьте аналитиком в Академии Data Science Научим находить инсайты в данных и поможем построить карьеру финансового аналитика
Станьте аналитиком в Академии Data Science Научим находить инсайты в данных и поможем построить карьеру финансового аналитика. По окончанию программы вы получите магистерский диплом по направлению «Математика и компьютерные науки». Оставьте заявку до 10 августа.

🗂Оптимизация работы с большим объемом данных при помощи партиционирования в SQL Оптимизация работы с данными позволяет нам снизить временные затраты, улучшить производительность и повысить доступность нашего приложения. Партиционирование в SQL • Это техника, которая позволяет разбить таблицу на несколько физических или логических разделов. Каждая такая разделенная часть называется партицией. Партиционирование применяется с целью улучшения производительности и эффективности работы с базой данных. Как работает партиционирование в SQL • В SQL партиционирование может быть реализовано при помощи различных механизмов. В основе всех этих механизмов лежит принцип разделения таблицы на физические или логические единицы хранения данных. Разделение может основываться на различных критериях, таких как диапазон значений столбца, хеш-значение, список значений и т. д. Существует два основных варианта партиционирования в SQL — горизонтальное и вертикальное. • Шаги по реализации партиционирования @sqlhub

⚡️Маст-хэв список программистов, каналы с последними книжными новинками, библиотеками, разбором кода и актуальной информацией, связанной с вашим языком программирования. Лучший способ получать свежие обновлении и следить за трендами в разработке. Python: t.me/pythonl C#: t.me/csharp_ci C/C++/ t.me/cpluspluc Машинное обучение: t.me/ai_machinelearning_big_data Data Science: t.me/data_analysis_ml Devops: t.me/devOPSitsec Go: t.me/Golang_google Базы данных: t.me/sqlhub Rust: t.me/rust_code Javascript: t.me/javascriptv React: t.me/react_tg PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Linux: t.me/+A8jY79rcyKJlYWY6 Big Data: t.me/bigdatai Хакинг: t.me/linuxkalii 💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy 🎞 YouTube канал: https://www.youtube.com/@uproger 😆ИТ-Мемы: t.me/memes_prog 🇬🇧Английский: t.me/english_forprogrammers

QueryFlow - это веб-приложение, которое безопасно отображает время выполнения запросов пользователя к базе данных. И так же,
QueryFlow - это веб-приложение, которое безопасно отображает время выполнения запросов пользователя к базе данных. И так же, позволяет разработчикам устанавливать пороги производительности на основе имеющихся данных.

🗂Оптимизация работы с большим объемом данных при помощи партиционирования в SQL Оптимизация работы с данными позволяет нам снизить временные затраты, улучшить производительность и повысить доступность нашего приложения. Партиционирование в SQL • Это техника, которая позволяет разбить таблицу на несколько физических или логических разделов. Каждая такая разделенная часть называется партицией. Партиционирование применяется с целью улучшения производительности и эффективности работы с базой данных. Как работает партиционирование в SQL • В SQL партиционирование может быть реализовано при помощи различных механизмов. В основе всех этих механизмов лежит принцип разделения таблицы на физические или логические единицы хранения данных. Разделение может основываться на различных критериях, таких как диапазон значений столбца, хеш-значение, список значений и т. д. Существует два основных варианта партиционирования в SQL — горизонтальное и вертикальное. • Шаги по реализации партиционирования @sqlhub

🐱 Переход на PgCat — прокси-сервер Postgres следующего поколения PgCat — это open source прокси-сервер Postgresql, в развити
🐱 Переход на PgCat — прокси-сервер Postgres следующего поколения PgCat  — это open source прокси-сервер Postgresql, в развитии которого мы участвуем и который используем на продакшене. Функционал PgCat для кластеров Postgresql: пул соединений, балансировка нагрузки, отработка отказа реплики. • В Instacart мы применяем Postgresql почти для всех задач баз данных: эффективным кешированием, индексированием, оптимизацией запросов и вертикальным масштабированием экземпляров выжимаем из одного экземпляра Postgres немало производительности. • Все это отличные стратегии, но с ними далеко не уедешь. Не ограничиваясь одним экземпляром за счет добавления реплик чтения или горизонтального сегментирования БД, мы в обоих случаях увеличиваем сложность. Почему PgCat? Разбираем подробно

🤖12 сервисов искусственного интеллекта, для написания кода. Mutable AI Альтернатива Copilot, которая предлагает бесплатную версию со сокращенным функционалом, а стоимость ее платной подписки варьируется от $10 до $25 в месяц. Эта альтернатива также предлагает следующие возможности: автодополнение кода, управление с помощью промптов, рефакторинг кода и автоматическую документацию. SpellBox Это AI-помощник для программистов, который можно установить как настольное приложение (для Windows и macOS), так и как плагин для VS Code. Он способен генерировать код в ответ на запросы, объяснять принципы работы программы и сохранять фрагменты кода в закладках. StarCoder Это AI-ассистент, который может создавать код на 80 языках, обученный на данных из GitHub. Эта модель похожа на GitHub Copilot, но с открытым исходным кодом и, по мнению разработчиков, она лучше других моделей. Blackbox AI BlackboxAI поддерживает более 20 языков программирования, включая Python, Java, C, C++, C#, JavaScript, SQL, PHP, Go, TypeScript, Kotlin, MATLAB, R, Swift, Rust, Ruby, Dart и Scala. Ghostwriter Chat Разработчики Replit создали не имеющую себе равных онлайн-IDE, которая основана на искусственном интеллекте. Эта инновационная система способна написать код в соответствии с контекстом проекта и не только дополняет код, написанный программистом, но и помогает отслеживать ошибки. CodeSquire.ai Это ИИ-ассистент, который помогает дата-сайентистам, инженерам и аналитикам. Он способен генерировать код в ответ на вопросы, создавать функции различной сложности, преобразовывать вводимые команды в SQL-запросы и детально объяснять, как работает каждый блок кода. Toolbuilder Toolbuilder позволяет быстро создавать ИИ-приложения и чат-боты, которые хранятся и запускаются на сайте. Вы можете поделиться ссылками на приложения с друзьями, а для выбора подходящего инструмента есть каталог готовых приложений, например, инструменты для поиска персонализированных подарков, анализа SEO показателей, рекомендации коктейлей и описания товаров. Еще один популярный инструмент - генератор постов для блога. Также вы можете использовать Toolbuilder для описания сюжета фильма с помощью эмодзи и иконок. Safurai Это бесплатный инструмент на основе искусственного интеллекта, который можно использовать как плагин для VS Code. Для того чтобы воспользоваться ее возможностями, достаточно выделить фрагмент кода: Safurai объяснит, как он работает, предложит советы по оптимизации и рефакторингу, напишет необходимые тесты и документацию. Будучи обучаемым на коде проекта, он запомнит все заданные вопросы. Text2SQL Text2SQL - данный искусственный интеллект создает запросы SQL, регулярные выражения, дизайны баз данных и формулы для Excel и Google Sheets. Присутствует бесплатный тариф, в то время как цены платной подписки варьируются от $2.49 до $4.99 в месяц. Code Snippets AI Приложение, использующее технологию GPT-4 для генерации кода. По вопросу о необходимости данного инструмента, разработчики отвечают, что это более экономичный вариант по сравнению с оригинальным ChatGPT Plus, подписка на который стоит $24 в месяц, в то время как подписка на Code Snippets AI обойдется в $10 в месяц. CodiumAI CodiumAI - программа для тестирования, использующая TestGPT-1 и GPT-3.5 & 4 для интеллектуального создания тестов и обработки кода, выявления ошибок и багов. В настоящее время этот инструмент работает с кодом Python, JavaScript и TypeScript. Благодаря подключению к VS Code и другим IDE от JetBrains, использование CodiumAI бесплатно. Metabob Metabob исправляет ошибки и выявляет уязвимости в коде, а также интегрируется с такими платформами, как VS Code, GitHub, BitBucket и GitLab. Эта программа берет под контроль все самые популярные языки программирования, включая Python, Javascript, Typescript, C++, С и Java, и предоставляет своевременные рекомендации по улучшению кода. B процессе работы Metabob автоматически производит рефакторинг кода разработчиков и искусственный разум. @data_analysis_ml

🔥В чем сила языка R и почему он так необходим SQL разработчикам? Этот язык является специализированным и создавался под конк
🔥В чем сила языка R и почему он так необходим SQL разработчикам? Этот язык является специализированным и создавался под конкретные задачи, связанные со сбором и анализом данных. Добавьте R в свой арсенал и перейдите на новый профессиональный уровень! 31.07 в 20.00 (мск) приглашаем на открытый урок “Экосистема R для анализа данных” курса “Язык R для анализа данных” в OTUS 📌На вебинаре: - рассмотрим основные возможности RStudio для анализа данных: работа с таблицами, построение графиков; - покажем, как пользоваться Jupyter для создания документов; - познакомимся с Visual Studio Code (VS Code). 👉Регистрация для участия https://otus.pw/qzeD/ Не упустите возможность получить новые знания и протестировать формат обучения. Курс доступен рассрочку. Нативная интеграция. Информация о продукте www.otus.ru

🦊 Kali Linux для продвинутого тестирования на проникновение. Sqlmap. Наиболее распространенной и используемой уязвимостью на
🦊 Kali Linux для продвинутого тестирования на проникновение. Sqlmap. Наиболее распространенной и используемой уязвимостью на веб-сайтах является SQL-инъекция. • Одним из самых полезных и мощных инструментов для оценки уязвимостей SQL-инъекций является sqlmap. Инструмент написан на Python, который автоматизирует разведку и эксплуатацию Firebird, Microsoft SQL, MySQL (теперь называется MariaDB, разработанный сообществом и коммерчески поддерживаемый форк MySQL), Базы данных Oracle, PostgreSQL, Sybase и SAP MaxDB. Мы продемонстрируем атаку SQL-инъекцией на базу данных Mutillidae. 1) Определить веб-сервер, внутреннюю систему управления базами данных и доступные базы данных. 2) Получите доступ к веб-сайту Mutillidae и просмотрите веб-страницы, чтобы определить те, которые принимают пользовательский ввод (например, форма входа пользователя, которая принимает имя пользователя и пароль от удаленного пользователя); эти страницы могут быть уязвимы для SQL-инъекций. 3) Затем откройте Kali и из терминала введите следующее (используя соответствующий целевой IP-адрес): root@kali:~# sqlmap -u 'http://targetip/mutillidae/index.php?page=user- info.php&username=admin&password=&user-info-php-submitbutton= sqlmap вернет данные, как показано на *рисунке 1. • Наиболее вероятной базой данных для хранения данных приложения, является БД Mutillidae; поэтому мы проверим все таблицы этой базы данных, используя следующую команду: root@kali:~# sqlmap -u "http://yourip/mutillidae/index.php?page=user-info.php&username=&password=&user-info-php-submit-button=View+Account+Details" -D mutillidae --tables Данные, возвращаемые при выполнении этой команды, показаны на *рисунке 2. 📌Читать далее @linuxkalii

📂Оптимизация данных в MS SQL Одним из методов для оптимизации обработки, хранения и администрирования данных в базе данных и кубах MS SQL — это процесс создании партицирования данных. Partitioning (партицирование или по-другому секционирование) — это разбиение таблицы на несколько частей, а эти части на одну или несколько файловых групп. • Партицирование необходимо для целей ускорения доступа чтения или изменения данных и администрирования. Т.к. выровненный индекс по таблице будет содержаться в каждой условно своей секции, то при чтении или изменении данных будет обращение к конкретной секции и конкретному индексу в этой секции. • Со стороны администрирования для процесса переноса (например архивирования) данных в другую таблицу без физического перемещения данных, а перемещения только логической секций, подлежащих этой операции, выполнение этого действия происходит мгновенно, что экономит время и ресурсы машины. Для этого необходимо подготовить таблицу «архив» — копию по структуре с таблицей источника, она может быть не партицированна. Пример кода для переноса в таблицу: ALTER TABLE DB.schema.table_sourse SWITCH PARTITION 1 TO DB.schema.table_arch; Но если мы хотим перемещать в партицированную таблицу, то таблица приемник должна использовать ту же функцию и схему партицирования, или схему и функцию повторяющую нужные нам диапазоны секционирования. Так же таблица должна содержать CONSTRAINT (ограничение), которое накладывается по полю секционирования. Продолжение

➡️ Использование составных триггеров (compound triggers) Oracle ▪️Примеры таких триггеров в основном связаны с логированием изменений таблицы, я решила рассмотреть пример из двух таблиц, которые изменяют друг друга. Дано: две таблицы orders и orders_detail. CREATE TABLE TMP.orders ( ID NUMBER, -- № заказа DATE_DOC DATE, -- дата заказа AMOUNT NUMBER, -- сумма заказа DISCOUNT NUMBER -- скидка от 0 до 100% ); CREATE TABLE TMP.orders_detail ( ID NUMBER, ID_ORDER NUMBER, -- № заказа ID_GOODS NUMBER, -- идентификатор товара PRICE NUMBER, -- цена товара QTY NUMBER, -- количество SUM_ORDER NUMBER -- стоимость заказа ); Перед нами стоят задачи: 1) при обновлении поля orders.discount пересчитать orders_detail.sum_order, а также обновить поле orders.amount по всему заказу; 2) при изменении orders_detail.price и(или) orders_detail.qty пересчитать orders_detail.sum_order, а также обновить поле orders.amount по всему заказу; 3) orders_detail.sum_order считается по формуле: orders_detail.sum_order = orders_detail.price * orders_detail.qty * (1- orders.discount/100). При таких задачах возникает ошибка мутирования таблиц ORA-04091: table is mutating. Эта ошибка встречается тогда, когда триггер уровня строк пытается вы­полнить чтение или запись в таблицу, для которой сработал триггер. • Например, нам нужно пересчитать поле orders_detail.sum_order, а для этого нам нужно прочитать поле orders.discount(которое изменилось). • Начиная с Oracle Database 11g можно использовать compound(составные) триггеры. Они представляют собой четыре различных триггера, объединенных в один. Вот пример синтаксиса такого триггера. ⤵️ Продолжение @sqlhub

💪 Пройди тест по MS SQL и проверь свои знания. Ответишь — пройдешь на углубленный курс "MS SQL Server разработчик" от OTUS п
💪 Пройди тест по MS SQL и проверь свои знания. Ответишь — пройдешь на углубленный курс "MS SQL Server разработчик" от OTUS по специальной цене + получишь запись мастер-класса от преподавателя курса🎁 . ⚠️ Освойте востребованные компетенции, чтобы уже через полгода вырасти с мидла до сеньора!  📌 ПРОЙТИ ТЕСТ: https://otus.pw/uoet/

📌 Возможности SQLite, которые вы могли пропустить 🔵Частичные индексы (Partial Indexes) При построении индекса можно указать условие попадания строки в индекс, к примеру, одна из колонок не пустая, а другая равна заданному значению. create index idx_partial on tab1(a, b) where a is not null and b = 5; select * from tab1 where a is not null and b = 5; --> search table tab1 using index 🔵Индексы на выражение (Indexes On Expressions) Если в запросах к таблице часто используется выражение, то можно построить индекс по нему. Однако следует иметь в виду, что пока оптимизатор не очень гибок и перестановка столбцов в выражении приведет к отказу от использования индекса. create index idx_expression on tab1(a + b); select * from tab1 where a + b > 10; --> search table tab1 using index ... select * from tab1 where b + a > 10; --> scan table 🔵Вычисляемые колонки (Generated Columns) Если данные столбца представляют собой результат вычисления выражения по другим столбцам, то можно создать виртуальный столбец. Есть два вида: VIRTUAL (вычисляется каждый раз при чтении таблицы и не занимает места) и STORED (вычисляется при записи данных в таблицу и место занимает). Разумеется записывать данные в такие столбцы напрямую нельзя. create table tab1 ( a integer primary key, b int, c text, d int generated always as (a * abs(b)) virtual, e text generated always as (substr(c, b, b + 1)) stored ); 🔵 R-Tree индекс Индекс предназначен для быстрого поиска в диапазоне значений/вложенности объектов, т.е. задачи типичной для гео-систем, когда объекты-прямоугольники заданы своей позицией и размером и требуется найти все объекты, которые пересекаются с текущим. Данный индекс реализован в виде виртуальной таблицы (см. ниже) и это индекс только по своей сути. Для поддержки R-Tree индекса требуется собрать SQLite с флагом SQLITE_ENABLE_RTREE (по умолчанию не установлен). create virtual table idx_rtree using rtree ( id, -- ключ minx, maxx, -- мин и макc x координаты miny, maxy, -- мин и макc y координаты data -- дополнительные данные ); insert into idx_rtree values (1, -80.7749, -80.7747, 35.3776, 35.3778); insert into idx_rtree values (2, -81.0, -79.6, 35.0, 36.2); select id from idx_rtree where minx >= -81.08 and maxx <= -80.58 and miny >= 35.00 and maxy <= 35.44; Остальные возможности можно тут @sqlhub