La sentencia SELECT consta de varias cláusulas. A continuación se muestran
algunas de ellas:
El orden en que se tienen en cuenta las distintas cláusulas durante la ejecución y la función de cada una de ellas es la siguiente:
FROM: especifica la tabla sobre la que se va a realizar la consulta.
WHERE: si sólo se debe mostrar un subconjunto de las filas de la tabla,
aquí se especifica la condición que deben cumplir las filas a mostrar;
esta condición será un predicado booleano con comparaciones unidas
por AND/OR.
SELECT: aquí se especifican las columnas a mostrar en el resultado; para
mostrar todas las columnas se utiliza *.
- DISTINCT: es un modificador que se utiliza tras la cláusula SELECT para
que no se muestren filas repetidas en el resultado (esto puede ocurrir
sólo cuando en la cláusula SELECT se prescinde de la clave primaria de la
tabla o de parte de ella, si es compuesta).
- ORDER BY: se utiliza para ordenar el resultado de la consulta.
La cláusula ORDER BY, si se incluye, es siempre la última en la sentencia
- SELECT. La ordenación puede ser ascendente o descendente y puede basarse en
una sola columna o en varias.
La sentencia del siguiente ejemplo muestra los datos de todos los clientes,
ordenados por el código postal, descendentemente. Además, todos los clientes
de un mismo código postal aparecerán ordenados por el nombre, ascendentemente.
4.4.1. Expresiones en SELECT y WHERE
En las cláusulas SELECT y WHERE, además de columnas, también se pueden
incluir expresiones que contengan columnas y constantes, así como funciones.
Las columnas y expresiones especificadas en la cláusula SELECT se pueden
renombrar al mostrarlas en el resultado mediante AS.
Si el resultado de una consulta se debe mostrar ordenado según el valor de
una expresión de la cláusula SELECT, esta expresión se indica en la cláusula
ORDER BY mediante el número de orden que ocupa en la cláusula SELECT.
SELECT precio, ROUND(precio * 0.8, 2) AS rebajado
FROM
articulos
ORDER BY 2;
4.4.2. Nulos
Cuando no se ha insertado un valor en una columna de una fila se dice que
ésta es nula. Un nulo no es un valor: un nulo implica ausencia de valor. Para
saber si una columna es nula se debe utilizar el operador de comparación IS
NULL y para saber si no es nula, el operador es IS NOT NULL.
Cuando se realiza una consulta de datos, los nulos se pueden interpretar
como valores mediante la función COALESCE(columna, valor_si_nulo). Esta
función devuelve valor_si_nulo en las filas donde columna es nula; si no,
devuelve el valor de columna.
SELECT codfac, fecha, codcli, COALESCE(iva, 0) AS iva,
iva AS iva_null, COALESCE(dto, 0) AS dto
FROM
facturas
WHERE
codcli < 50
AND
(iva = 0 OR iva IS NULL);
La condición (iva=0 OR iva IS NULL) es equivalente a COALESCE(iva,0)=0.
4.4.3. Tipos de datos
Los tipos de datos disponibles se deben consultar en el manual del SGBD
relacional que se esté utilizando. Puesto que las prácticas de las asignaturas
para las que se edita este libro se realizan bajo PostgreSQL, se presentan aquí
los tipos de datos que se han usado en este SGBD para crear las tablas. Todos
ellos pertenecen al estándar de SQL.
VARCHAR(n): Cadena de hasta n caracteres.
NUMERIC(n,m): Número con n dígitos, de los cuales m se encuentran a la
derecha del punto decimal.
DATE: Fecha formada por día, mes y año. Para guardar fecha y hora se
debe utilizar el tipo TIMESTAMP.
BOOLEAN: Aunque este tipo no se ha utilizado en la base de datos de
prácticas, es interesante conocer su existencia. El valor verdadero se re-
presenta mediante TRUE y el falso mediante FALSE. Cuando se imprimen
estos valores, se muestra el carácter ’t’ para verdadero y el carácter ’f’
para falso.
Hay que tener siempre en cuenta que el nulo no es un valor, sino que implica
ausencia de valor. El nulo se representa mediante NULL y cuando se imprime
no se muestra nada.
4.5. Funciones y operadores

No hay comentarios:
Publicar un comentario