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 [ * ] |