Repaso a la cláusula WHERE MySQL, su funcionalidad es la de condicionar las consultas SELECT que se realizan a una base de datos.
Otros post de MySQL que os puedan ser de ayuda son:
Veamos la sintaxis extraída de su web oficial:
SELECT campo1, campo2... FROM tabla1, tabla2... [WHERE condicion1 [AND [OR]] condicion2...
Tal y como podemos apreciar la sintaxis es sencilla, realizamos la consulta SELECT de la tabla o tablas y después vendrían las posibles condiciones con WHERE.
Veamos los operadores condicionales:
Vamos a ver con una serie de ejemplos sencillos los condicionantes de WHERE:
SELECT nombre, apellidos FROM empleados WHERE edad = 40
En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que tengan 40 años. Cuando el campo a comparar es numérico va sin comillas.
SELECT nombre, apellidos FROM empleados WHERE pais = 'México'
En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que sean de México. El campo a comparar es alfanumérico, por lo tanto va entre comillas.
SELECT nombre, apellidos FROM empleados WHERE estado_civil != 'soltero'
En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que estén casados, la condición implica que el resultado devuelto sea distinto a ‘soltero’.
SELECT nombre, apellidos FROM empleados WHERE edad > 40
En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que tengan más de 40 años, los que tengan 40 años no saldrán en los resultados.
SELECT nombre, apellidos FROM empleados WHERE edad < 40
En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que tengan menos de 40 años, los que tengan 40 años no saldrán en los resultados.
SELECT nombre, apellidos FROM empleados WHERE edad >= 40
En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que tengan 40 años o más, los que tengan 40 años sí saldrán en los resultados.
SELECT nombre, apellidos FROM empleados WHERE edad <= 40
En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que tengan 40 años o menos, los que tengan 40 años sí saldrán en los resultados.
Hasta ahora os he puesto ejemplos básicos con una única condición, os muestro varios ejemplos para realizar más condiciones con OR y/o AND:
SELECT nombre, apellidos FROM empleados WHERE edad <= 40 AND edad >= 50
En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que tengan 40 años o menos y los que tengan 50 o más años, los que tengan 40 y 50 años sí saldrán en los resultados.
SELECT nombre, apellidos FROM empleados WHERE pais = 'México' AND edad > 30
En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que sean de México y que tengan más de 30 años, los que tengan 30 años no saldrán en los resultados.
SELECT nombre, apellidos FROM empleados WHERE pais != 'México' OR edad > 50
En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que no sean de México o que tengan más de 50 años, los que tengan 50 años no saldrán en los resultados. Los empleados que tengan más de 50 y no sean de México sí saldrán.
SELECT nombre, apellidos FROM empleados WHERE pais != 'México' OR edad > 30 AND antiguedad > 10
En el ejemplo superior estamos seleccionando el nombre y apellidos de los empleados que no sean de México o tengan más de 50 años y que además tengan una antigüedad en la empresa de más de 10 años. Los empleados que sean de México y tengan 30 o menos años con antigüedad de más de 10 sí saldrán.
SELECT nombre, apellidos FROM empleados WHERE (pais = 'México' OR edad > 30) AND antiguedad > 10
Con los paréntesis podemos agrupar las condiciones para que sean menos liosas que el ejemplo anterior. En este nuevo caso se debe cumplir una de las 2 condiciones, que sí sea de México o tenga más de 30 años, del resultado obtenido se mostrarán los que además tengan más de 10 años de antigüedad en la empresa.