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:
Sintaxis de la cláusula WHERE MySQL
Veamos la sintaxis extraída de su web oficial:
1 2 3 |
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.
Operadores condicionales de la cláusula WHERE MySQL
Veamos los operadores condicionales:
- ‘=‘ El operador = determina si el valor de los campos comparados son iguales.
- ‘!=‘ El operador != determina si el valor de los campos comparados son distintos.
- ‘>‘ El operador > determina si el primer valor es mayor que el segundo valor comparado.
- ‘<‘ El operador < determina si el primer valor es menor que el segundo valor comparado.
- ‘>=‘ El operador >= determina si el primer valor es mayor o igual que el segundo valor comparado.
- ‘<=‘ El operador <= determina si el primer valor es menor o igual que el segundo valor comparado.
Ejemplos de cláusula WHERE MySQL
Vamos a ver con una serie de ejemplos sencillos los condicionantes de WHERE:
1 2 3 |
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.
1 2 3 |
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.
1 2 3 |
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’.
1 2 3 |
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.
1 2 3 |
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.
1 2 3 |
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.
1 2 3 |
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.
Cómo realizar varios condicionantes con OR y/o AND
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:
1 2 3 |
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.
1 2 3 |
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.
1 2 3 |
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.
1 2 3 |
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.
1 2 3 |
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.