- Origen es una referencia a un campo, matriz de campos o tabla de
base de datos
- Alias es un nombre de variable temporal
- Condición es cualquier expresión booleana
- Destino es una vía de acceso relativa
SELECT combina, filtra y vuelve a dar
formato a datos complejos de mensaje y de base de datos.
Es el método normal de transformación de mensajes.
No hay diferencias sintácticas o semánticas entre una
SELECT que opere en una tabla de base de datos y otra que opere en un mensaje.
En concreto:
- Las expresiones de cláusula SELECT pueden utilizar cualquier operador y
función del intermediario en cualquier combinación.
Pueden hacer referencia a las columnas de las tablas, campos de mensajes,
nombres de correlación declarados por las SELECT que contienen y cualquier otra
variable o constante declarada que esté dentro del ámbito.
- Sus cláusulas AS correspondientes pueden contener vías de acceso de
múltiples partes. Por ejemplo,
A.B.C, incluidos los especificadores de tipo de campo como A.B.(XML.Attribute)C),
expresiones de nombre (por ejemplo, A.B.{var}) e índices (por ejemplo,
A.B.C[i]).
Las expresiones que haya en estas vías de acceso
pueden utilizar cualquier
operador y función del intermediario en cualquier combinación.
Las expresiones pueden hacer referencia a las columnas de las tablas, campos de mensajes,
nombres de correlación declarados por las SELECT que contienen y cualquier otra
variable o constante declarada.
- La cláusula FROM puede contener varias referencias a bases de datos, varias
referencias a mensajes, o una mezcla de ambas.
Puede unir tablas con tablas, mensajes con mensajes, o tablas con mensajes, con
las limitaciones siguientes:
- Las expresiones de la cláusula FROM de base de datos como, por ejemplo,
Database.Schema1.Table1, no pueden contener expresiones de ninguna clase.
No puede calcular un nombre de esquema o tabla durante la ejecución.
- Si la cláusula FROM hace referencia tanto a mensajes como a tablas, las
tablas deben preceder a los mensajes.
- La expresión de cláusula WHERE también puede utilizar cualquier operador y
función del intermediario en cualquier combinación.
Las expresiones pueden hacer referencia a las columnas de las tablas, campos de
mensajes, nombres de correlación declarados por las SELECT que contienen y
cualquier otra variable o constante declarada.
No obstante, tenga en cuenta lo siguiente:
- El intermediario trata las expresiones de cláusula WHERE examinando la
expresión y decidiendo si la base de datos puede evaluar la expresión entera.
Si puede hacerlo, se suministrará a la base de datos.
Para que la base de datos la evalúe, sólo debe utilizar aquellas funciones y
operadores soportados por la base de datos.
No obstante, todavía puede hacer referencia a campos de mensajes,
nombres de correlaciones declarados por las SELECT que contiene y cualesquiera
otras variables o constantes declaradas que estén dentro del ámbito.
- Si la base de datos no puede evaluar la expresión entera, el intermediario
buscará operadores AND de nivel superior y examinará cada subexpresión por
separado.
A continuación, intentará proporcionar a la base de datos aquellas
subexpresiones que ésta pueda evaluar, dejando que el intermediario evalúe el
resto.
Tiene que ser consciente de esta situación por dos razones:
- Cambios aparentemente triviales en expresiones de cláusula WHERE pueden
tener grandes efectos en el rendimiento.
Puede determinar qué parte de la expresión se ha suministrado a la base de
datos examinando un rastreo de usuario.
- Las funciones de algunas bases de datos tienen diferencias sutiles de
funcionamiento respecto a las del intermediario.
Utilice SELECT para:
- Volver a dar formato a mensajes de manera general
- Acceder a tablas de base de datos
- Crear una matriz de salida que sea un subconjunto de una matriz de
entrada
- Crear una matriz de salida que sólo contenga los valores de una matriz de
entrada
- Contar el número de entradas de una matriz
- Seleccionar el valor mínimo o máximo de varias entradas de una matriz
- Sumar los valores de una matriz
SELECT de ESQL difiere del SELECT de SQL de base de datos de las
maneras siguientes:
- ESQL puede producir datos de resultados estructurados en árbol
- ESQL puede aceptar matrices en cláusulas SELECT
- ESQL tiene THE e ITEM
- ESQL no tiene SELECT ALL
- ESQL no tiene SELECT DISTINCT
- ESQL no tiene GROUP BY o HAVING
- ESQL no tiene función de columna AVG
Para obtener información sobre cómo utilizar la función SELECT, vea
los temas indicados a continuación.