Ir al contenido principal

Clausula SELECT de PostgreSQL

La clausula SELECT es una de las más utilizadas cuando se trabaja con datos. Esta permite extraer datos de una o varias tablas. Para ello la clausula SELECT puede enriquecerse con otras clausulas que nos permitirán filtrar los datos hasta conseguir el conjunto exacto que necesitamos. Por todo ello, podemos decir que la clausula SELECT es una de las más complejas que existen en PostgreSQL.

Dado que la clausula SELECT es una clausula compleja, iremos presentando sus diferentes componentes en diversos capítulos. En este primer capítulo nos centraremos en la sintaxis básica de la clausula SELECT.

Sintaxis

La sintaxis básica de la clausula SELECT es la siguiente:

SELECT
  columnas
FROM
  tabla;

Como ves la sentencia SELECT tiene una sintaxis muy intuitiva que puede ser traducida fácilmente al lenguaje natural: selecciona la lista de columnas de la tabla. Ahora veamos con más detalle los componentes:

  • SELECT. Es el nombre de la clausula e indica al motor de bases de datos que deseamos ejecutar una consulta.
  • columnas. Es una lista de todas columnas que queremos recuperar de la tabla tabla. La lista de columnas puede ser uno o varios nombres de columna separados por una coma (,). También podemos usar el carácter asterisco (*), que significa 'todas' y nos permite seleccionar todas las columnas sin tener que definir los nombres.
  • FROM. Es una clausula dentro de SELECT que define una lista de las tablas desde donde queremos recuperar datos. Esta clausula es opcional y puede ser omitida cuando no se van a recuperar datos de ninguna tabla.
  • tabla. Es la lista propiamente dicha de tablas sobre las cuales queremos recuperar datos. La lista puede ser de una o más tablas separadas por una coma.

Recuerda que todas las sentencias PostgreSQL deben finalizar por un punto y coma (;).

Para entender mejor la clausula SELECT vamos a ver un ejemplo práctico.

SELECT * FROM employees;

La sentencia anterior devuelve una lista con todos los registros contenidos en la tabla employees:

s1-select-1.png

En este caso, como hemos usado el asterisco (*) en la selección de columnas, el resultado devuelto por PostgreSQL contiene todas las columnas de la tabla.

Selección de determinadas columnas

Como vimos en el ejemplo anterior al usar el asterisco (*) se seleccionan todas las columnas de la tabla. Veamos ahora un ejemplo en el que vamos a seleccionar solo unas determinadas columnas.

SELECT last_name, first_name, title_of_courtesy FROM employees;

Como vemos en la lista de columnas hemos definido qué columnas queremos recuperar, en este ejemplo son las columnas last_namefirst_name y title_of_courtesy. El resultado que obtenemos es el siguiente:

s1-select-1b.png

En este caso, como hemos usado el asterisco (*) en la selección de columnas, el resultado devuelto por PostgreSQL contiene todas las columnas de la tabla.

Selección de determinadas columnas

Como vimos en el ejemplo anterior al usar el asterisco (*) se seleccionan todas las columnas de la tabla. Veamos ahora un ejemplo en el que vamos a seleccionar solo unas determinadas columnas.

SELECT last_name, first_name, title_of_courtesy FROM employees;

Como vemos en la lista de columnas hemos definido qué columnas queremos recuperar, en este ejemplo son las columnas last_namefirst_name y title_of_courtesy. El resultado que obtenemos es el siguiente:

s1-select-2.png

Selección usando expresiones

Toda la potencia de la clausula SELECT reside en la potencia del lenguaje SQL de PostgreSQL. Una de estas características es el uso de expresiones para estructurar y formatear las columnas de manera que obtengamos un conjunto de datos en la forma que nosotros deseemos. De este modo tenemos una flexibilidad total para obtener los datos y no tener que ceñirnos a la estructura que tienen en la base de datos.

Como ejemplo práctico vamos a suponer que queremos recuperar la lista de todos los empleados, pero queremos recuperar solo una columna que contenga el título de cortesía, el nombre y el apellido de cada uno:

SELECT title_of_courtesy ||' '|| first_name ||' '|| last_name FROM employees;

Observa que en la lista de columnas hemos definido una sola columna que está formada por la concatenación de los resultados de las tres columnas. La concatenación se define con doble tubo ||. En este caso estamos concatenando el valor de dos columnas con un espacio en blanco, lo cual va a construir una cadena formateada, como puedes apreciar a continuación.

s1-select-3.png

Como habíamos avanzado anteriormente, la clausula FROM es opcional y puede ser omitida cuando no se consultan datos sobre una tabla. Un ejemplo es el uso en la siguiente sentencia:

SELECT (20 + 10) * 2;

Cuyo resultado sera:

s1-select-4.png