SQL92 permite expresiones para transformar datos en tablas.Las expresiones pueden contener operadores (ver Operadores para más detalles) y funciones (Funciones 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 ] |
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... } |
class_name [ * ] |