Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ_ФИН.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
338.29 Кб
Скачать
  1. Новые возможности sql-3. Перспективы развития стандарта.

Глобальные изменения:

  1. Возможность вызова подпрограммы на других языках программирования из SQL

  2. Появление средств работы с XML-документами

Изменения в ядре:

  1. Новые типы данных

  2. Расширение возможности CREATE TABLE

  3. Введение последовательности SEQUENCE

  4. Появление генерируемых(виртуальных столбцов)

  5. Появление оператора MERGE (DML)

  6. Появление мультимножеств

Новые типы данных:

- битовая последовательность (без операций)

- BigInt (64-bit)

- XMLType (объектный тип данных)

Мультимножества – неупорядоченная коллекция элементов одного типа, допускаются дубликаты.

Определен набор операций над мультимножествами:

-удаление дубликатов,

- Определение кардинальности множества

- Выборка элементов из множества

- Объединение мультимножеств, пересечение и разность (опции сохранения дубликатов или без)

- Агрегатная функция для работы с множествами (типа MAX,MIN), позволяющая объединить значения разных строк в мультимножества, пересечь мультимножества в группу и т.д.

Возможности CREATE TABLE:

  • Введен раздел LIKE (для создания подобных таблиц)

CREATE TABLE (COL1,COL2,…) LIKE NAME_ANOTHER_TABLE

  • Опция, копировать ли данные

  • Опция, перетаскивать ли ограничения

  • Введен раздел AS SELECT

CREATE TABLE NAME_TABLE AS SELECT query

(Ограничения не будут перенесены)

  • Опция WITH NO DATA\WITH DATA

Последовательности:

CREATE SEQUENCE NAME_SEQ START WITH Num INCREMENT BY Num(step) MINVALUE (num for decrementing sequences)

MAXVALUE Num

{CYCLE num, NO CYCLE}

NAME_SEQ NEXT_VAL

Генерируемые столбцы (виртуальные) – вычисляемые столбцы таблицы, работающие вместо представления/смеси представления и таблиц. Значения пересчитываются автоматически.

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

MERGE INTO приемник AS INX USING {запрос, имя источника}

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

Наконец-то появляется возможность определения триггеров как комбинации спецификаций события и действия. Действие определяется как SQL-процедура, в которой могут использоваться как операторы SQL, так и ряд управляющих конструкций. На самом деле, этот механизм очень близок к тому, который реализован в OracleV.7 (и, конечно, в Oracle 8).

Что касается управления транзакциями, то происходит возврат к старой идее SystemR о возможности установки внутри транзакции точек сохранения (savepoints). В операторе ROLLBACK можно указать идентификатор ранее установленной точки сохранения, и тогда будет произведен откат транзакции не к ее началу, а к этой точке сохранения.

Как видно, можно ожидать наличия в SQL/3 многих интересных и полезных возможностей. Однако даже промежуточные проекты стандарта включают почти в два раза больше страниц, чем стандарт SQL/92. Поэтому трудно ожидать быстрой реализации этого стандарта после его принятия (а многие вообще сомневаются, что этот стандарт будет когда-либо реализован).