Skip to content

GROUP BY алиас - особенность Oracle, которая была бы замечательна в SQL Server

Пересказ статьи Aaron Bertrand. SQL GROUP BY Alias - An Oracle feature that would be great in SQL Server


Запросы с GROUP BY могут стать слишком путаными, если столбцом группировки является сложное выражение. В силу логического порядка обработки запроса вам часто приходится повторять такое выражение, поскольку его алиас не может быть использован в предложении GROUP BY.

Oracle недавно решил эту проблему в выпуске 23c, добавив возможность группировки GROUP BY алиас_столбца. Это такой простой, но мощный синтаксис, и я надеюсь, что SQL Server может последовать за Oracle.
Continue reading "GROUP BY алиас - особенность Oracle, которая была бы замечательна в SQL Server"

Предложение With Function в Oracle SQL

Пересказ статьи Martien van den Akker. Oracle SQL With Function clause


Оно существует уже давно: предложение WITH в Oracle SQL. И, действительно, я использовал его в прошлом. Предложение WITH весьма полезно для модуляризации вашего SQL, особенно в представлениях.

Первое время его использования, у меня был случай, когда я не знал, как решить задачу без предложения WITH. Это было до того времени (в районе 2018), когда я заставил себя познакомиться с ANSI-SQL. Так или иначе, я полюбил предложение WITH, поэтому использовал его также в случаях, когда оно не было необходимо. Но выглядело это изящно. И это модулизировало мои запросы. Continue reading "Предложение With Function в Oracle SQL"

Генерация тестовых данных с помощью встроенных возможностей базы данных

Пересказ статьи Denis Magda. Sample Data Generation With Built-In Database Capabilities


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

В этой статье вы узнаете, как использовать специальные функции базы данных, иерархические запросы и рекурсивные общие табличные выражения (CTE) для генерации тестового набора данных в PostgreSQL, MySQL, Oracle и SQL Server.
Continue reading "Генерация тестовых данных с помощью встроенных возможностей базы данных"

REGEX в SQL

Пересказ статьи Sai Krishna. REGEX IN SQL


В своих запросах SQL вы, вероятно, использовали предложение WHERE для фильтрации конкретного текста, выполняя поиск на точное совпадение. Например, вы могли бы использовать запрос типа “SELECT * FROM EMP WHERE name = 'Alex'”. Этот подход возвращает записи, которые точно соответствуют имени Alex в том же регистре. Однако имеется более универсальный способ обработки сложных текстовых шаблонов, использующих регулярные выражения (regex).
Continue reading "REGEX в SQL"

Nidhi Gupta. DECODE vs CASE IN ORACLE

Пересказ статьи Nidhi Gupta. DECODE vs CASE IN ORACLE


DECODE: Decode - это функция в SQL. Это способ преобразования написанного кода в понимаемый язык.

CASE: Case - это оператор в SQL. Это способ реагирования на появление значения или на то, какое действие необходимо выполнить при появлении определенного значения.
Continue reading "Nidhi Gupta. DECODE vs CASE IN ORACLE"

Понимание предложения ROWS BETWEEN в SQL

Пересказ статьи Rahma Hassan. Understanding the “ROWS BETWEEN” Clause in SQL


В SQL предложение “ROWS BETWEEN” является мощным средством, которое позволяет вам определить окно строк для анализа или вычислений непосредственно в запросе. Указывая диапазон строк, вы можете выполнять вычисления или применять агрегатные функции к подмножеству данных, а не ко всему результирующему набору. Цель данной статьи - сделать понятным предложение “ROWS BETWEEN” и его использование на примерах.
Continue reading "Понимание предложения ROWS BETWEEN в SQL"

NULL в Oracle

Пересказ статьи Andrei Rogalenko. NULL in Oracle


Ключевые моменты


Специальное значение NULL означает отсутствие данных, утверждение того факта, что значение неизвестно. По умолчанию столбцы и переменные любого типа могут принимать это значение, если они не имеют ограничения NOT NULL. Помимо этого, СУБД автоматически добавляет ограничение NOT NULL для столбцов, входящих в первичный ключ таблицы.

Главная особенность NULL состоит в том, что оно ничему не равно, даже другому NULL. Вы не можете сравнивать с ним любое значение с помощью операторов: =, <, >, like ... Даже выражение NULL != NULL не будет истинным, поскольку нельзя однозначно сравнивать одно неизвестное значение с другим. К слову, это выражение не будет и ложным (false), т.к. при вычислении условий Oracle не ограничивается состояниями TRUE и FALSE. Благодаря наличию элемента неопределенности в виде NULL, имеется еще одно состояние - UNKNOWN.
Continue reading "NULL в Oracle"

Давайте поговорим о схеме базы данных

Пересказ статьи Adron. Let’s Talk About Database Schema


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

Что такое схема?


В целом, в стороне от специфических реализаций в реляционных базах данных, "схема" - это концептуальная основа или проект, который определяет структуру, связи и ограничения данных или информации. Она предоставляет способ описания и организации данных в структурированном виде. Такое понятие схемы не уникально для баз данных; например, в GraphQL схема определяет типы, запросы, мутации и связи между ними, ограничивая набор возможных операций, которые могут выполняться с использованием API, и форму возвращаемых данных. Continue reading "Давайте поговорим о схеме базы данных"

Освоение Oracle PL/SQL: продвинутые концепции и методы

Пересказ статьи Lakshitha Perera. Mastering Oracle PLSQL Advanced Concepts and Techniques


Oracle PL/SQL, универсальный инструмент для управления базами данных, который совершенно сливается с SQL. В нашей предыдущей статье мы рассматривали его основы и промежуточные аспекты, закладывающие прочную основу для понимания этого сложного языка.

Теперь мы готовы погрузиться в продвинутый Oracle PL/SQL. В этой статье рассматривается развитое использование курсоров, сложная обработка исключений, естественная компиляция, динамический SQL и поставляемые Oracle пакеты. Мы также исследуем методы настройки производительности, взаимодействие с SQL*PLUS и триггеры уровня базы данных.
Continue reading "Освоение Oracle PL/SQL: продвинутые концепции и методы"

Статистика для улучшения производительности: сравнение SQL Server и Oracle

Пересказ статьи Pablo Echeverria. SQL Server vs Oracle Query Statistics to Improve Performance


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

В этой статье мы увидим, как определить, какие планы выполнения находятся в кэше и их накопленную статистику, сколько раз они были выполнены, и какое число различных планов выполнения имеется.
Continue reading "Статистика для улучшения производительности: сравнение SQL Server и Oracle"

Руководство по операторам INSERT, UPDATE и DELETE в Oracle

Пересказ статьи Chandra Rawat. A Guide to INSERT, UPDATE, and DELETE Statements in Oracle


Эта статья посвящена трем наиболее часто используемым командам SQL в Oracle: INSERT, UPDATE и DELETE. Эти команды используются для вставки новых данных в таблицы, обновления существующих данных и удаления данных из таблиц, соответственно.

Здесь я подробно рассмотрю каждый из этих операторов, и как они используются в Oracle. Замечу, что операторы INSERT, UPDATE и DELETE могут использоваться только на тех таблицах, на которые у вас имеются привилегии для выполнения этих команд.

Continue reading "Руководство по операторам INSERT, UPDATE и DELETE в Oracle"

Роли, схемы, привилегии и владельцы в SQL Server, Oracle и PostgreSQL. Часть II

Пересказ статьи Andrea Gnemmi. SQL Server, Oracle and PostgreSQL Database Security Roles, Schemas, Grants, Privileges and Owners - Part II


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

Continue reading "Роли, схемы, привилегии и владельцы в SQL Server, Oracle и PostgreSQL. Часть II"

Настройка производительности SQL

Пересказ статьи Gaurav Rajapurkar. SQL Performance Tuning


Настройка производительности SQL - это процесс оптимизации запросов SQL, гарантирующий их быстрое выполнение, насколько это возможно. Имеется множество факторов, которые влияют на производительность SQL-запросов, таких как число участвующих в запросе таблиц, размер и число столбцов в таблицах, индексы на таблицах.
Настройка производительности SQL является важным элементом, который сказывается на масштабируемости и скорости запросов. Здесь обсуждаются некоторые способы настройки SQL. Continue reading "Настройка производительности SQL"

Триггеры: от любви до ненависти

Пересказ статьи Ryan. Triggers: A LoveHate Relationship


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

Действие...реакция


Мы живем в мире действия/реакции - и не важно, как наши данные обрабатываются. По мере того, как системы реляционных баз данных развивались и совершенствовались на протяжении десятилетий, в декларативную систему добавлялись различные формы программных функций. Continue reading "Триггеры: от любви до ненависти"

Привилегии и роли в SQL Server, Oracle и PostgreSQL. Часть 1

Пересказ статьи Andrea Gnemmi. Privileges and Roles in SQL Server, Oracle and PostgreSQL - Part 1


Предоставление привилегий на объект базы данных является наиболее распространенным видом деятельности, которую выполняют администраторы баз данных, стараясь при этом дать разрешения, достаточные для выполнения работы, но не слишком большой доступ. Помните о принципе наименьших привилегий! Иногда это сложно реализовать, и, как мы видели на многих других примерах, имеются некоторые различия в реализации этой функциональности в трех рассматриваемых РСУБД, плюс появились некоторые новые роли в SQL Server 2022. В настоящей статье мы рассмотрим то, как предоставить разрешения в SQL Server, Oracle и PostgreSQL.

В этом руководстве мы дадим обзор различных способов предоставления привилегий в SQL Server, Oracle и PostgreSQL. Будут также представлены различия в концепциях ролей, схем и владельцев, а также способ предоставления разрешений на всю схему. Работая над этой статьей, я осознал, что она становится все больше и больше, поэтому я разбил ее на 2 части. В этой первой части мы сосредоточим внимание на концепции ролей. Continue reading "Привилегии и роли в SQL Server, Oracle и PostgreSQL. Часть 1"