Виртуальный столбец - Virtual column

В реляционных базы данных а виртуальный столбец это стол столбец значение которого автоматически вычисляется с использованием значений других столбцов или другого детерминированного выражения. Виртуальные столбцы определяются из SQL: 2003 как созданный столбец [1], и реализуются только некоторыми СУБД, подобно MariaDB, SQL Server, Oracle, SQLite и Firebird (сервер базы данных) (ВЫЧИСЛЕНО синтаксисом).

Выполнение

Есть два типа виртуальных столбцов:

  • Виртуальные колонки;
  • Постоянные столбцы.

Значения виртуальных столбцов вычисляются на лету при необходимости, например, когда они возвращаются оператором SELECT. Постоянные значения столбца вычисляются, когда ряд вставляется в таблицу, и они записываются, как и все другие значения. Они могут измениться, если изменятся другие значения. Как виртуальные, так и постоянные столбцы имеют преимущества и недостатки: виртуальные столбцы не занимают место на диске, но они должны вычисляться каждый раз, когда к ним обращается запрос; постоянные столбцы не требуют процессорного времени, но занимают дисковое пространство. Однако иногда выбор недоступен, поскольку некоторые СУБД поддерживают только один тип столбца (или ни один из них).

IBM DB2

База данных Db2 поддерживает виртуальный столбец Версии 8 как созданный столбец. [2]

MariaDB

MariaDB это MySQL вилка. В дерево 5.2 добавлены виртуальные столбцы.[3]

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

  • Они должны быть детерминированными.
  • Они не могут возвращать постоянные значения.
  • Они не могут использовать пользовательские функции или Хранимые процедуры.
  • Они не могут включать другие виртуальные столбцы.
  • Они не могут использовать подзапросы.

Постоянные столбцы могут быть проиндексированы и могут быть частью иностранный ключ, с некоторыми небольшими ограничениями, касающимися принудительного исполнения.

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

Таблицы MRG_MyISAM могут быть основаны на таблицах MyISAM, которые включают постоянные столбцы; но соответствующий столбец MRG_MyISAM должен быть определен как обычный столбец.

Синтаксис

Оператор CREATE TABLE или ALTER TABLE может использоваться для добавления виртуального столбца. Синтаксис, используемый для определения виртуального столбца, следующий:

<тип>  [Генерируется ВСЕГДА]  В КАЧЕСТВЕ   ( <выражение> )  [ВИРТУАЛЬНЫЙ | НАСТОЙЧИВЫЙ]  [УНИКАЛЬНЫЙ] [УНИКАЛЬНЫЙ КЛЮЧ] [КОММЕНТАРИЙ <текст>]
  • тип тип данных столбца.
  • выражение - это выражение SQL, которое возвращает значение столбца для каждой строки.
  • текст - необязательный комментарий столбца.

MySQL

Поддержка виртуальных столбцов, известных в MySQL как сгенерированные столбцы, стала доступна в MySQL 5.7. В последующих версиях были смягчены различные ограничения на их использование.[4]

Oracle

Начиная с версии 11g, Oracle поддерживает виртуальные столбцы.[5]

SQL Server

Microsoft SQL Server поддерживает виртуальные столбцы, но они называются вычисляемыми столбцами.[6]

SQL Server поддерживает как постоянные, так и непостоянные вычисляемые столбцы.

Жар-птица

Жар-птица всегда поддерживал виртуальные столбцы в качестве своего предшественника InterBase поддерживает это, называемое вычисляемыми столбцами.[7]

Firebird поддерживает виртуальные столбцы, а не постоянные, и позволяет выполнять частичный выбор, вызывать встроенные функции, внешние функции и сохраненные процедуры в выражении виртуального столбца.

Синтаксис

Создание виртуального столбца может быть выполнено во время создания таблицы, а при добавлении столбцов в существующую таблицу синтаксис, используемый для определения виртуального столбца, следующий:

имя_столбца [тип] Вычислено К (выражение)

или отраслевой стандарт

имя_столбца [тип] Генерируется ВСЕГДА В КАЧЕСТВЕ (выражение)

PostgreSQL

Начиная с версии 12, PostgreSQL поддерживает виртуальные столбцы, известные как сгенерированные столбцы. [8]

SQLite

Начиная с версии 3.31.0 (2020-01-22), SQLite поддерживает виртуальные столбцы, известные как сгенерированные столбцы. [9]

Примечания

внешняя ссылка