Expresiones

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.

Par�metros

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';
     

Expresiones Funcionales

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)
     

Expresiones de Agregaci�n

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 ( * )

Donde aggregate_name es la agregaci�n previamente definida, y expressiones cualquier expresi�n que no contenga a su vez ninguna expresi�n de agregaci�n.

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.

Lista Objetivo

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.

Calificadores

Un calificador consiste en cualquier n�mero de cl�usulas conectadas por operadores l�gicos:

NOT
AND
OR

Una cl�usula es un a_expr que se eval�a como un boolean sobre el conjunto de instancias.

Lista From

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 ("*").