SQL92 permite expresiones para transformar datos en tablas.Las expresiones pueden contener operadores (ver Operadores para más detalles) y funciones (Functions tiene más información).
Una expresión es una de las siguientes:
( a_expr ) |
constantes |
atributos |
a_expr binary_operator a_expr |
a_expr right_unary_operator |
left_unary_operator a_expr |
parametros |
expresiones funcionales |
expresiones de agregación |
Nosotros ya hemos hablado de las constantes y atributos. Las tres clases de expresiones de operadores son respectivamente operadores binarios (infijo), unarios por la derecha (sufijo) y unarios por la izquierda (prefijo). Las siguientes secciones hablan de la distintas opciones.
Un Parámetro se usa para indicar un parámetro en una función SQL. Típicamente este es el uso de la definición de la declaración de la función SQL. La forma con paréntesis es:
$number
Por ejemplo, consideramos la definición de la función, dept, como
CREATE FUNCTION dept (name) RETURNS dept AS 'select * from dept where name=$1' LANGUAGE 'sql';
Una Expresión Funcional es el nombre de una función legal SQL, seguida por sus lista de argumentos entre paréntesis:
function (a_expr [, a_expr ... ] )
Por ejemplo, el siguiente calcula la raíz cuadrada del salario de un empleado:
sqrt(emp.salary)
Una expresión de agregación representa la aplicación de una función de agregación a través de las filas seleccionadas por la consulta. Una función de agregación reduce múltiples entradas a un solo valor de salida, como la suma o la media de la entrada. La sintaxis de la expresión de agregación es la siguiente:
aggregate_name (expression) |
aggregate_name (ALL expression) |
aggregate_name (DISTINCT expression) |
aggregate_name ( * ) |
La primera forma de expresión de agregación llama a la agregación a través de todas las filas de entrada la expresión devuelve un valor no nulo. La segunda forma es similar a la primera, pero ALL es por defecto. La tercera forma llama a la agregación para todas las filas de entrada con valores distintos entre si y no nulo. La última forma llama a la agregación para cada una de las filas de entrada sean con valor nulo o no; si no se especifica un valor específico de entrada, generalmente sólo es útil para la agregación count().
Por ejemplo, count(*) devuelve el número total de filas de entrada; count(f1) devuelve el número de filas de entrada donde f1 no es nulo; count(distinct f1) devuelve el número de distintos valores no nulos de f1.
Una Lista Objetivo es una lista de uno o más elementos separados por comas y entre paréntesis, cada una debe ser de la forma:
a_expr [ AS result_attname ]Donde result_attname es el nombre del atributo que ha sido creado (o el nombre del atributo que ya existía en el caso de una sentencia de actualización.) Si result_attname no está presente, entonces a_expr debe contener sólo un nombre de atributo el cual se asumirá como el nombre del campo resultado. Sólo se usa el nombrado por defecto en Postgres si a_expr es un atributo.
Un calificador consiste en cualquier número de cláusulas conectadas por operadores lógicos:
NOT |
AND |
OR |
La Lista From es una lista de expresiones from. separadas por comas. Cada "expresión from " es de esta forma:
[ class_reference ] instance_variable {, [ class_ref ] instance_variable... }Donde class_reference es de la forma
class_name [ * ]La "expresión from" define una o más variables instancia sobre el rango que la clase indica en class_reference. Uno también puede requerir la variable instancia sobre el rango de todas la clases que están por debajo de las clases indicadas en la jerarquía de herencia especificando el designador asterisco ("*").