Jump to content

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

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

Выполнение

[ редактировать ]

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

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

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

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

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

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

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

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

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

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

Синтаксис

[ редактировать ]

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

<type>  [GENERATED ALWAYS]  AS   ( <expression> )  [VIRTUAL | PERSISTENT]  [UNIQUE] [UNIQUE KEY] [COMMENT <text>]
  • type — тип данных столбца
  • выражение — это выражение SQL, которое возвращает значение столбца для каждой строки.
  • текст — необязательный комментарий столбца

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

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

SQL-сервер

[ редактировать ]

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

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

Жар-птица

[ редактировать ]

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

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

Синтаксис

[ редактировать ]

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

column_name [type] COMPUTED BY (expression)

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

column_name [type] GENERATED ALWAYS AS (expression)

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

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

См. также

[ редактировать ]
  1. ^ SQL:2003 опубликован.
  2. ^ Справочник по SQL, том 2, версия 8
  3. ^ Виртуальные столбцы
  4. ^ «MySQL :: Справочное руководство MySQL 5.7 :: 13.1.18.7 СОЗДАНИЕ ТАБЛИЦЫ и сгенерированные столбцы» .
  5. ^ «Управление схемой Oracle 11g» . Архивировано из оригинала 6 августа 2017 г.
  6. ^ «Вычисляемые столбцы» . 4 октября 2012 г.
  7. ^ "СТОЛ" .
  8. ^ «5.3. Сгенерированные столбцы» . 12 августа 2021 г.
  9. ^ «Созданные столбцы» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 6a33c0727e33d4888e1a72c43ffd8159__1703328300
URL1:https://arc.ask3.ru/arc/aa/6a/59/6a33c0727e33d4888e1a72c43ffd8159.html
Заголовок, (Title) документа по адресу, URL1:
Virtual column - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)