En las bases de datos relacionales, una columna virtual es una columna de tabla cuyo valor se calcula automáticamente utilizando los valores de otras columnas o alguna otra expresión determinista. Las columnas virtuales se definen en SQL:2003 como Columna Generada, [ 1 ] y solo las implementan algunos sistemas de gestión de bases de datos (DBMS) , como MariaDB , SQL Server , Oracle , PostgreSQL , SQLite y Firebird (servidor de base de datos) (sintaxis COMPUTED BY).
Implementación
Existen dos tipos de columnas:
- Columnas virtuales
- Columnas persistentes
Los valores de las columnas virtuales se calculan sobre la marcha cuando es necesario, por ejemplo, cuando los devuelve una sentencia SELECT. Los valores de las columnas persistentes se calculan cuando se inserta una fila en una tabla y se escriben como cualquier otro valor. Pueden cambiar si cambian otros valores. Tanto las columnas virtuales como las persistentes tienen ventajas y desventajas: las columnas virtuales no consumen espacio en disco, pero deben calcularse cada vez que una consulta las utiliza; las columnas persistentes no requieren tiempo de CPU, pero consumen espacio en disco. Sin embargo, a veces no es posible elegir, ya que algunos sistemas de gestión de bases de datos (DBMS) solo admiten un tipo de columna (o ninguno).
IBM Db2
IBM Db2 admite columnas virtuales de la versión 8 como columnas generadas. [ 2 ]
MariaDB
MariaDB es una bifurcación de MySQL . Se agregaron columnas virtuales en el árbol 5.2. [ 3 ]
Las expresiones que se pueden utilizar para calcular las columnas virtuales tienen las siguientes limitaciones:
- Deben ser deterministas.
- No pueden devolver valores constantes.
- No pueden utilizar funciones definidas por el usuario ni procedimientos almacenados.
- No pueden incluir otras columnas virtuales.
- No pueden utilizar subconsultas.
Las columnas persistentes pueden indexarse y formar parte de una clave externa , con algunas pequeñas limitaciones en lo que respecta a la aplicación de restricciones.
Las columnas virtuales solo se pueden usar en tablas que utilicen un motor de almacenamiento que las admita. Los motores de almacenamiento que admiten columnas virtuales son:
Las tablas MRG_MyISAM pueden basarse en tablas MyISAM que incluyan columnas persistentes; pero la columna MRG_MyISAM correspondiente debe definirse como una columna normal.
Sintaxis
Se puede utilizar una instrucción CREATE TABLE o ALTER TABLE para agregar una columna virtual. La sintaxis utilizada para definir una columna virtual es la siguiente:
< tipo > [ GENERADO SIEMPRE ] COMO ( < expresión > ) [ VIRTUAL | PERSISTENTE ] [ ÚNICO ] [ CLAVE ÚNICA ] [ COMENTARIO < texto > ]- tipo es el tipo de datos de la columna
- La expresión es la expresión SQL que devuelve el valor de la columna para cada fila.
- El texto es un comentario de columna opcional.
MySQL
La compatibilidad con columnas virtuales, conocidas en MySQL como columnas generadas, comenzó a estar disponible en MySQL 5.7. En versiones posteriores se han flexibilizado diversas limitaciones en su uso. [ 4 ]
Oráculo
Desde la versión 11g, Oracle admite columnas virtuales. [ 5 ]
Servidor SQL
Microsoft SQL Server admite columnas virtuales, pero se denominan columnas calculadas. [ 6 ]
SQL Server admite columnas calculadas tanto persistentes como no persistentes.
Pájaro de fuego
Firebird siempre ha admitido columnas virtuales, al igual que su predecesor InterBase , llamadas Columnas Computadas. [ 7 ]
Firebird admite columnas virtuales, no persistentes, y permite realizar subconsultas, llamar a funciones integradas, funciones externas y rutinas almacenadas en la expresión de la columna virtual.
Sintaxis
La creación de una columna virtual puede realizarse durante la creación de una tabla o al agregar columnas a una tabla existente. La sintaxis utilizada para definir una columna virtual es la siguiente:
nombre_columna [ tipo ] CALCULADO POR ( expresión )o el estándar de la industria
column_name [ tipo ] GENERATED ALWAYS AS ( expresión )PostgreSQL
Desde la versión 12, PostgreSQL admite columnas virtuales, conocidas como columnas generadas. [ 8 ]
SQLite
Desde la versión 3.31.0 (22/01/2020), SQLite admite columnas virtuales, conocidas como columnas generadas. [ 9 ]
Véase también
Referencias
- ↑ SQL:2003 ha sido publicado
- ↑ Referencia SQL Volumen 2 Versión 8
- ↑ Columnas virtuales
- ↑ "MySQL :: Manual de referencia de MySQL 5.7 :: 13.1.18.7 CREATE TABLE y columnas generadas" .
- ↑ "Gestión de esquemas de Oracle 11g" . Archivado del original el 6 de agosto de 2017.
- ↑ "Columnas calculadas" . 4 de octubre de 2012.
- ↑ "TABLA" .
- ↑ "5.3. Columnas generadas" . 12 de agosto de 2021.
- ↑ "Columnas generadas" .
Enlaces externos
- Columnas virtuales en la documentación de MariaDB.
- MariaDB 5.2: ¿Para qué usarías columnas virtuales? Archivado el 7 de abril de 2022 en Wayback Machine en OpenLife.cc
- Columnas virtuales en Oracle Database 11g Release 1
- Columnas calculadas en SQL Server 2008
- Sistemas de gestión de bases de datos