He escuchado a personas referirse a esta tabla y no estaba segura de qué se trataba.
He escuchado a personas referirse a esta tabla y no estaba segura de qué se trataba.
Respuestas:
Es una especie de tabla ficticia con un único registro utilizado para seleccionar cuando no está realmente interesado en los datos, sino que quiere los resultados de alguna función del sistema en una declaración de selección:
p.ej select sysdate from dual;
De Wikipedia
Historia
La tabla DUAL fue creada por Chuck Weiss de Oracle Corporation para proporcionar una tabla para unirse en vistas internas:
Creé la tabla DUAL como un objeto subyacente en el Diccionario de Datos Oracle. Nunca se pensó para verse, sino que se utilizó dentro de una vista que se esperaba consultar. La idea era que pudieras unirte a la tabla DUAL y crear dos filas en el resultado para cada fila de tu tabla. Luego, al usar GROUP BY, la unión resultante podría resumirse para mostrar la cantidad de almacenamiento para la extensión DATA y para la extensión o extensiones INDEX. El nombre, DUAL, parecía apto para el proceso de crear un par de filas a partir de una sola. 1
Puede que no sea obvio por lo anterior, pero la tabla DUAL original tenía dos filas (de ahí su nombre). Hoy en día solo tiene una fila.
Mejoramiento
DUAL originalmente era una tabla y el motor de la base de datos realizaría el disco IO en la tabla al seleccionar DUAL. Esta E / S de disco generalmente era una E / S lógica (que no implicaba acceso físico al disco) ya que los bloques de disco generalmente ya estaban almacenados en la memoria caché. Esto dio como resultado una gran cantidad de IO lógico contra la tabla DUAL.
Las versiones posteriores de la base de datos Oracle se han optimizado y la base de datos ya no realiza E / S físicas o lógicas en la tabla DUAL aunque la tabla DUAL todavía exista.
Creo que este artículo de Wikipedia puede ayudar a aclarar.
http://en.wikipedia.org/wiki/DUAL_table
La tabla DUAL es una tabla especial de una fila presente de forma predeterminada en todas las instalaciones de bases de datos Oracle. Es adecuado para usar en la selección de una pseudocolumna como SYSDATE o USER. La tabla tiene una sola columna VARCHAR2 (1) llamada DUMMY que tiene un valor de "X"
Una especie de pseudo tabla en la que puede ejecutar comandos y obtener resultados, como sysdate. También lo ayuda a verificar si Oracle está activo y verificar la sintaxis de SQL, etc.
Una tabla de utilidades en Oracle con solo 1 fila y 1 columna. Se usa para realizar una serie de operaciones aritméticas y se puede usar generalmente cuando se necesita generar una salida conocida.
SELECCIONAR * DE dual;
dará una sola fila, con una sola columna llamada "DUMMY" y un valor de "X" como se muestra aquí:
DUMMY ----- X
Más datos sobre el DUAL ...
http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388
Experimentos emocionantes hechos aquí, y explicaciones más emocionantes de Tom
La tabla DUAL es una tabla especial de una fila presente de forma predeterminada en todas las instalaciones de bases de datos Oracle. Es adecuado para su uso en la selección de una pseudocolumna como SYSDATE o USER
La tabla tiene una sola columna VARCHAR2 (1) llamada DUMMY que tiene un valor de "X"
Puede leer todo al respecto en http://en.wikipedia.org/wiki/DUAL_table
Es un objeto para poner desde el que devuelve 1 fila vacía. Por ejemplo: seleccione 1 de dual; devuelve 1
seleccione 21 + 44 de dual; devuelve 65
seleccione [secuencia] .nextval de dual; devuelve el siguiente valor de la secuencia.
DUAL usamos principalmente para obtener el siguiente número de las secuencias.
Sintaxis: SELECCIONE 'nombre_secuencia'.NEXTVAL DESDE DUAL
Esto devolverá el valor de una fila una columna (nombre de columna NEXTVAL).
Otra situación que requiere select ... from dual
es cuando queremos recuperar el código (definición de datos) para diferentes objetos de la base de datos (como TABLE, FUNCTION, TRIGGER, PACKAGE), utilizando la DBMS_METADATA.GET_DDL
función integrada:
select DBMS_METADATA.GET_DDL('TABLE','<table_name>') from DUAL;
select DBMS_METADATA.GET_DDL('FUNCTION','<function_name>') from DUAL;
Es cierto que hoy en día los IDE ofrecen la capacidad de ver el DDL de una tabla, pero en entornos más simples como SQL Plus esto puede ser realmente útil.
EDITAR
Una situación más general: básicamente, cuando necesitamos usar cualquier procedimiento PL / SQL dentro de una instrucción SQL estándar, o cuando queremos llamar a un procedimiento desde la línea de comandos:
select my_function(<input_params>) from dual;
ambas recetas están tomadas del libro 'Oracle PL / SQL Recipes' de Josh Juneau y Matt Arena
El DUAL es una tabla especial de una fila y una columna presente de forma predeterminada en todas las bases de datos Oracle. El propietario de DUAL es SYS.
DUAL es una tabla creada automáticamente por Oracle Database junto con las funciones de datos. Siempre se usa para obtener las funciones del sistema operativo (como fecha, hora, expresión aritmética, etc.)
SELECT SYSDATE from dual;