martes, 22 de marzo de 2016

Consultas II

En la lección anterior hemos construido con éxito nuestra primera consulta:

SELECT Nombre, Apellidos
FROM Empleados
WHERE Salario > 1350

Las tres cláusulas y las preguntas de construcción

Fijémonos ahora en las tres cláusulas de la consulta SQL anterior y que relación guardan con las preguntas de construcción:

1.- Cláusula SELECT: donde indicamos los campos de la tabla que queremos obtener, separados por comas. Responde a la pregunta: ¿Qué datos nos piden?
2.- Cláusula FROM: donde indicamos en que tabla se encuentran estos campos. Responde a la pregunta: ¿Dónde están los datos?
3.- Cláusula WHERE: donde establecemos la condición que deben cumplir los registros de la tabla que serán seleccionados. Responde a la pregunta: ¿Qué requisitos deben cumplir lo registros? Es de hecho donde se establece el filtro de registros, es decir, que registros serán considerados para mostrar sus datos y cuales no.

Modificando la cláusula WHERE

Imaginemos ahora la siguiente cuestión: ¿Qué empleados tienen un sueldo comprendido entre 1350 y 1450?




Si nos hacemos las preguntas de construcción:
1.- ¿Qué datos nos piden?
2.- ¿Dónde están los datos?
3.- ¿Qué requisitos deben cumplir los registros?

Observamos que para las dos primeras preguntas las respuestas son idénticas a la anterior cuestión, pero para la tercera es distinta. Esto nos indica que las cláusulas SELECT y FROM no van a cambiar respecto a la anterior consulta, y sólo lo hará la cláusula WHERE, así que podemos tomar la anterior consulta como patrón y modificarla para adaptarla a lo que se nos pide ahora.

SELECT Nombre, Apellidos
FROM Empleados
WHERE Salario > 1350

Antes el salario debía ser mayor a 1350, ahora debe estar comprendido entre 1350 y 1450, ambos inclusive. La cláusula WHERE la construiremos de la siguiente manera:

WHERE Salario >= 1350 AND Salario <= 1450

Y se lee así: donde el salario sea mayor o igual a 1350 y menor o igual a 1450. La consulta entonces quedaría:

SELECT Nombre, Apellidos
FROM Empleados
WHERE Salario >= 1350 AND Salario <= 1450

Si comparamos las dos consultas, se observa que difieren únicamente en la cláusula WHERE.

El operador BETWEEN

Existe otro modo de obtener el mismo resultado anterior aprovechando más los recursos de SQL mediante el operador BETWEEN (entre). La consulta es equivalente y quedaría de la siguiente manera:

SELECT Nombre, Apellidos
FROM Empleados
WHERE Salario BETWEEN 1350 AND 1450

Es decir: donde el salario esté entre 1350 y 1450, ambos inclusive.

Y el resultado que nos devuelve el SGBD es:




El motor SQL

Aunque en la lección anterior se dijo que SQL nos permite desentendernos de como se reúnen los datos, en un futuro nos vendrá bien entender de forma lógica su manera de proceder. Veamos como ejecuta esta consulta el motor SQL del SGBD. Primero seleccionará los registros que cumplen la condición de la cláusula WHERE, para ello debe recorrer todos los registros de la tabla y decidir, en función de la condición, si lo toma en consideración o no. Al final reunirá los campos indicados en la cláusula SELECT de la tabla indicada en la cláusula FROM cuyos registros han sido seleccionados por la clausula WHERE.

Resumen

Hemos dividido una consulta SQL concreta en tres cláusulas, se ha relacionado cada cláusula con las preguntas de construcción, hemos tomado como patrón una consulta para modificarla y adaptarla a los nuevos requisitos.

Ejercicio propuesto

Intenta hallar una consulta que devuelva el Nombre y Apellidos de los Empleados que cobren menos de 1350 euros.

No hay comentarios:

Publicar un comentario