La tabla DUAL es una tabla especial de una fila y una columna presente por defecto en Oracle y otras instalaciones de bases de datos . En Oracle, la tabla tiene una única columna VARCHAR2(1) llamada DUMMY con valor 'X'. Es adecuada para seleccionar una pseudocolumna como SYSDATE o USER.
Ejemplo de uso
La sintaxis SQL de Oracle requiere la cláusula FROM , pero algunas consultas no requieren ninguna tabla; en estos casos se puede utilizar DUAL.
SELECCIONAR 1 + 1 DE dual ;SELECCIONE 1 DE dual ;SELECCIONAR USUARIO DE dual ;SELECCIONAR FECHA DEL SISTEMA DESDE dual ;SELECCIONAR * DE dual ;Historia
Charles Weiss explica por qué creó DUAL:
Creé la tabla DUAL como un objeto subyacente en el Diccionario de Datos de Oracle. Nunca se concibió para ser vista directamente, sino para usarse dentro de una vista que se esperaba que fuera consultada. La idea era que se pudiera realizar una unión (JOIN) con la tabla DUAL y crear dos filas en el resultado por cada fila de la tabla. Luego, mediante GROUP BY, la unión resultante podría resumirse para mostrar la cantidad de almacenamiento para la extensión DATA y para las extensiones INDEX. El nombre DUAL parecía apropiado para el proceso de crear un par de filas a partir de una sola. [ 1 ]
Mejoramiento
A partir de la versión 10g Release 1, Oracle ya no realiza operaciones de E/S físicas o lógicas en la tabla DUAL, aunque la tabla sigue existiendo. [ 2 ]
DUAL está disponible para todos los usuarios autorizados en una base de datos SQL.
En otros sistemas de bases de datos
Varias otras bases de datos (incluidas Microsoft SQL Server, MySQL, PostgreSQL, SQLite y Teradata) permiten omitir la cláusula FROM por completo si no se necesita ninguna tabla. Esto evita la necesidad de crear tablas ficticias.
- ClickHouse tiene una tabla del sistema de una sola fila, system.one, con una única columna llamada "dummy", de tipo UInt8 y valor 0. Esta tabla se utiliza implícitamente cuando no se especifica ninguna tabla en la consulta SELECT.
- Firebird tiene una tabla del sistema de una sola fila, RDB$DATABASE, que se utiliza de la misma manera que DUAL de Oracle, aunque también tiene un significado propio.
- IBM Db2 tiene una vista que resuelve DUAL cuando se utiliza la compatibilidad con Oracle. [ 3 ] También tiene una tabla llamada sysibm.sysdummy1 que tiene propiedades similares a la de Oracle DUAL.
- Informix : Informix versión 11.50 y posteriores tienen una tabla con el mismo nombre pero con un nombre más detallado. [ 4 ] Puede usar para crear un nombre en la base de datos actual con la misma funcionalidad.
sysmaster:"informix".sysdualCREATEPUBLICSYNONYMdualFORsysmaster:"informix".sysdualdual - Microsoft Access : Se puede crear una tabla llamada DUAL y aplicar la restricción de una sola fila mediante ADO ( consulta UNION sin tabla en MS Access ).
- Microsoft SQL Server : SQL Server no requiere una tabla ficticia. Las consultas como 'select 1 + 1' se pueden ejecutar sin una cláusula "from" ni el nombre de la tabla. [ 5 ]
- MySQL permite especificar DUAL como una tabla en consultas que no necesitan datos de ninguna tabla. [ 6 ] Es adecuado para su uso en la selección de una función de resultado como SYSDATE() o USER() , aunque no es esencial.
- PostgreSQL : Se puede agregar una vista DUAL para facilitar la migración desde Oracle. [ 7 ]
- Snowflake : DUAL es compatible, pero no está documentado explícitamente. Aparece en ejemplos de SQL para otras operaciones en la documentación.
- SQLite : Se puede crear una vista llamada "dual" que funcione igual que la tabla "dual" de Oracle de la siguiente manera:
CREATEVIEWdualASSELECT'x'ASdummy; - SAP HANA tiene una tabla llamada DUMMY que funciona igual que la tabla "dual" de Oracle.
- La base de datos Teradata no requiere una tabla ficticia. Las consultas como 'select 1 + 1' se pueden ejecutar sin una cláusula "from" ni un nombre de tabla.
- Vertica ofrece soporte para una tabla DUAL en su documentación oficial. [ 8 ]
Notas
- ↑ "Más sobre la historia de Oracle" . Revista Oracle . Enero-febrero de 2002. Archivado del original el 5 de diciembre de 2004. Consultado el 4 de septiembre de 2013 .
- ↑ Referencia del lenguaje SQL de Oracle Database 11g Release 2 (11.2), Selección de la tabla DUAL
- ↑ Centro de información de DB2 10.1 :: DB2 versión 10.1 para Linux, UNIX y Windows - Tabla DUAL
- ↑ Informix 12.10 InfoCenter :: Referencia del administrador :: La base de datos sysmaster :: Las tablas de la interfaz de monitorización del sistema :: sysdual
- ↑ ¿Cuál es el equivalente en Oracle de la tabla “Dual” en SQL Server?
- ↑ "MySQL :: Manual de referencia de MySQL 5.0 :: 13.2.8 Sintaxis SELECT" . Archivado del original el 3 de enero de 2012. Consultado el 14 de marzo de 2009 .
- ↑ PostgreSQL :: Wiki de PostgreSQL :: Conversión de Oracle a Postgres
- ↑ "DUAL" . www.vertica.com . Consultado el 10 de marzo de 2022 .
- Bases de datos
- Software Oracle