Tutoriales SQL – La sentencia SELECT – La clausula SELECT
En mi artículo Introduccion a SQL, les comence explicando brevemente la sentencia SELECT del lenguaje SQL. En este articulo voy a profundizar un poco más en la sintaxis de esta sentencia.
Como les había comentado, la sentencia SELECT se compone de varias clausulas, cada una de ellas sigue un proposito diferente en la manipulación de los datos que queremos seleccionar. Las clausulas de la sentencia SELECT y sus propositos se podrian resumir en el siguiente cuadro:
Clausula | Proposito |
SELECT | Determina las columnas a incluir en los resultados de la consulta. |
FROM | Identifica las tablas desde donde seran obtenidos los datos y como estas tablas se van a relacionar entre si. |
WHERE | Establece como se van a filtrar los datos a través de expresiones logicas que deben cumplir las lineas a seleccionar. |
GROUP BY | Se utiliza para agupar las lineas segun los valores comunes de las columnas. |
HAVING | Establece como se van a filtrar los grupos. Solo puede ser utilizada con la clausula GROUP BY |
ORDER BY | Ordena las lineas del resultado por una o varias columnas. |
La clausula SELECT
Esta clausula es la que determina las columnas y los datos a incluir en el resultado final de nuestra consulta. Las columnas a incluir dependen de la tabla desde donde estemos seleccionando los datos; obviamente, si incluimos en el SELECT una columna que no existe en la tabla detallada en la clausula FROM, el motor de nuestra base de datos nos devolverá un error.
Como les había comentado anteriormente en la introduccion, si queremos que la sentencia SELECT nos devuelva todas las columnas en el resultado, debemos utilizar el asterisco (*); y para seleccionar solo las columnas que queremos ver, simplemente debemos enumerarlas luego de la clausula SELECT; esta enumeración no debe seguir necesariamente el orden original de la tabla, podemos alterar ese orden en la forma que deseemos.
Ademas de permitirnos seleccionar las columnas que nos mostrará el resultado, la clausula SELECT nos ofrece mucha más flexibilidad, al poder incluir en nuestro SELECT expresiones, valores literales (como números o texto), funciones estandar y funciones definidas por nosotros.
Alias:
Si vemos el ejemplo anterior; los encabezados de las columnas que estan constituídas por expresiones no son del todo descriptivos de sus resultados; para modificar este comportamiento, el lenguaje SQL nos ofrece la posibilidad de utilizar alias de columnas, incluyendo estos alias detras de cada elemento de la clausula SELECT, podemos definir los encabezados que mejor nos describan nuestros resultados.
Un detalle a tener en cuenta es que los alias no pueden incluir espacios, pero pueden utilizar el guion bajo(_) para los casos en que necesiten encabezados de más de una palabra. Adicionalmente los alias tambien pueden ser expresados anteponiendo la palabra AS a cada uno de ellos, de esta forma queda más explícito para quien pueda leer nuestra sentencia que estamos utilizando alias.
Quitando los duplicados:
En ciertos casos, nuestras consultas nos arrojan valores duplicados. Por ejemplo con la siguiente consulta, yo quiero saber cuales son los id de los clientes que realizaron alguna vez un pago, pero como vemos, el resultado nos esta trayendo valores duplicados, haciendo realmente dificil su lectura.
La razón por la que nos esta trayendo estos valores duplicados, se debe a que hay clientes que han realizado pagos mas de una vez, generando cada uno de ellos una linea distinta en nuestra tabla. Para poder quitar estos duplicados, y hacer más claro el resultado de nuestra consulta, podemos utilizar la palabra clave DISTINCT en nuestra clausula SELECT.
De esta forma los duplicados han sido removidos. Tener en cuenta que utilizar DISTINCT requiere un esfuerzo adicional de nuestro motor de base de datos; por lo que si se utiliza en una tabla con un gran número de registros, puede consumir bastante tiempo obtener el resultado.
Hasta aquí llega este tutorial, en próximas entregas voy a continuar explicando las restantes clausulas de la sentencia SELECT.
Vayan practicando lo aprendido hasta ahora!
Saludos!!