PHP y MySQL

Cláusula WHERE MySQL: Consultas condicionales en bases de datos

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:

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:

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 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 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:

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 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.

compartir
Publicado por
Aner Barrena