Wirtualna kolumna

W relacyjnych bazach danych kolumna wirtualna to kolumna tabeli , której wartość jest automatycznie obliczana na podstawie wartości innych kolumn lub innego wyrażenia deterministycznego. Kolumny wirtualne są zdefiniowane w SQL:2003 jako wygenerowana kolumna i są implementowane tylko przez niektóre systemy DBMS , takie jak MariaDB , SQL Server , Oracle , PostgreSQL , SQLite i Firebird (serwer bazy danych) (składnia COMPUTED BY).

Realizacja

Istnieją dwa typy kolumn wirtualnych:

  • Wirtualne kolumny;
  • Stałe kolumny.

wartości kolumn wirtualnych są obliczane na bieżąco , na przykład gdy są zwracane przez instrukcję SELECT. Trwałe wartości kolumn są obliczane po wiersza do tabeli i są zapisywane jak wszystkie inne wartości. Mogą się zmienić, jeśli zmienią się inne wartości. Zarówno kolumny wirtualne, jak i trwałe mają zalety i wady: kolumny wirtualne nie zajmują miejsca na dysku, ale muszą być obliczane za każdym razem, gdy zapytanie do nich się odnosi; trwałe kolumny nie wymagają czasu procesora, ale zajmują miejsce na dysku. Jednak czasami wybór nie jest dostępny, ponieważ niektóre DBMS obsługują tylko jeden typ kolumny (lub żaden z nich).

IBMDb2

IBM Db2 obsługuje kolumnę wirtualną wersji 8 jako kolumnę wygenerowaną.

MariaDB

MariaDB to rozwidlenie MySQL . W drzewie 5.2 dodano kolumny wirtualne.

Wyrażenia, których można użyć do obliczenia kolumn wirtualnych, mają następujące ograniczenia:

  • Muszą być deterministyczne.
  • Nie mogą zwracać stałych wartości.
  • Nie mogą używać funkcji zdefiniowanych przez użytkownika ani procedur przechowywanych .
  • Nie mogą zawierać innych kolumn wirtualnych.
  • Nie mogą korzystać z podzapytań.

Kolumny trwałe mogą być indeksowane i mogą być częścią klucza obcego , z kilkoma małymi ograniczeniami dotyczącymi wymuszania ograniczeń.

Kolumny wirtualne mogą być używane tylko w tabelach, które korzystają z obsługującego je mechanizmu przechowywania. Silniki pamięci masowej obsługujące kolumny wirtualne to:

Tabele MRG_MyISAM mogą być oparte na tabelach MyISAM, które zawierają trwałe kolumny; ale odpowiednia kolumna MRG_MyISAM powinna być zdefiniowana jako zwykła kolumna.

Składnia

Do dodania kolumny wirtualnej można użyć instrukcji CREATE TABLE lub ALTER TABLE. Składnia używana do definiowania kolumny wirtualnej jest następująca:

                     <typ>  [  GENEROWANE  ZAWSZE  ]  AS  (  <  wyrażenie  >  )  [  WIRTUALNE  |  _  _  TRWAŁY  ]  [  UNIKALNY  ]  [  UNIKALNY  KLUCZ  ]  [  KOMENTARZ  <  tekst  >  ] 
  • type to typ danych kolumny.
  • wyrażenie jest wyrażeniem SQL, które zwraca wartość kolumny dla każdego wiersza.
  • tekst jest opcjonalnym komentarzem kolumny.

MySQL

Obsługa kolumn wirtualnych, znanych w MySQL jako kolumny wygenerowane, zaczęła być dostępna w MySQL 5.7. Różne ograniczenia dotyczące ich stosowania zostały złagodzone w kolejnych wersjach.

Wyrocznia

Od wersji 11g Oracle obsługuje kolumny wirtualne.

Serwer SQL

Microsoft SQL Server obsługuje kolumny wirtualne, ale są one nazywane kolumnami obliczeniowymi.

SQL Server obsługuje zarówno utrwalone, jak i nieutrwalone kolumny obliczeniowe.

ognisty Ptak

Firebird zawsze obsługiwał kolumny wirtualne, podobnie jak jego poprzednik InterBase , o nazwie Computed Columns.

Firebird obsługuje kolumny wirtualne, a nie trwałe, i pozwala na podselekcję, wywoływanie wbudowanych funkcji, funkcji zewnętrznych i procedur przechowywanych w wyrażeniu kolumny wirtualnej.

Składnia

Tworzenie kolumny wirtualnej można wykonać podczas tworzenia tabeli, a podczas dodawania kolumn do istniejącej tabeli składnia używana do definiowania kolumny wirtualnej jest następująca:

     nazwa_kolumny  [  typ  ]  COMPUTED  BY  (  wyrażenie  ) 

lub standard branżowy

      nazwa_kolumny  [  typ  ]  GENEROWANE  ZAWSZE  JAKO  (  wyrażenie  ) 

PostgreSQL

Od wersji 12 PostgreSQL obsługuje kolumny wirtualne, zwane kolumnami generowanymi.

SQLite

Od wersji 3.31.0 (22.01.2020) SQLite obsługuje kolumny wirtualne, znane jako kolumny wygenerowane.

Notatki

Linki zewnętrzne