WHERE: Condiciones sobre los datos



Generalidades
Es una cláusula que acompaña siempre a la cláusula FROM y en ella se manifiesta un criterio para filtrar o elegir exclusivamente los registros deseados, estos criterios son las características que tienen que cumplir los datos que vamos a manipular.

La cláusula WHERE va siempre acompañada de los operadores lógicos AND, OR ó NOT según corresponda, que concatenan las condiciones o criteros empleados, a su vez estos criterios emplean todos y cada uno de los operadores de comparación como ser <, >, <> ó = entre otros.

La sintaxis para hacer una selección es simple y es la siguiente:

SELECT * FROM nombre_de_tabla WHERE id < 100

DELETE FROM nombre_de_tabla WHERE id > 100 AND ciudad <> 'París'

UPDATE nombre_tabla SET pais = 'Francia' WHERE (id <= 100 OR id >= 200) AND ciudad = 'París'


Algunas pautas a tener en cuenta si queremos solamente recuperar aquellos registros que cumplan una o algunas condiciones preestablecidas son que las comibnaciones de operadores de comparación AND y OR conllevan la utilización de paréntesis, sino nos vamos a encontrar con distintos resultados al ejecutar la consulta en cuestión.

El operador OR que se analizará más a fondo en el artículo correspondiente separa dos o más criterios, los cuales se pretende que se cumpla al menos uno o más, es por esto que la sintaxis correcta dicta que deben ir todos los criterios que se utilicen con OR, encerrados entre paréntesis; mientras que si se utiliza el operador AND esto no será necesario.

Veamos esto con dos ejemplos que traerían dos resultados diferentes:

SELECT * FROM nombre_tabla WHERE (id <= 100 OR id >= 200) AND (ciudad = 'París' OR ciudad = 'Estocolmo')

Esta sintaxis nos va a seleccionar todos los registros cuyo campo "id" no se encuentre entre 100 y 200, es decir que sea menor o igual que 100 o bien mayor o igual que 200 cumplieando uno de los dos criterios por eso el operador OR; y a la vez vemos como otra condición aparte que se exige que el campo "ciudad" sea Paris o Estocolmo; debiéndose cumplir el criterio del campo "id" y el de la "ciudad" al mismo tiempo.

SELECT * FROM nombre_tabla WHERE id <= 100 OR id >= 200 AND ciudad = 'París' OR ciudad = 'Estocolmo'

Ahora que si eliminamos todos los paréntesis, vamos a seleccionar todos los registros cuyo campo "id" sea menor o igual que 100 o bien mayor o igual que 200 y a su vez con este último criterio deberá cumplirse que el campo "ciudad" sea Paris; o bien por último podría cumplirse que el campo "ciudad" sea Estocolmo; en general debiéndose cumplir el 1er criterio del campo "id" ó el 2do criterio del campo "id" junto con el de la "ciudad" Paris, ó bien el 3ro que la "ciudad" sea igual a Estocolmo, bastando con cualquiera de los 3 criterios que se cumpla.

Notemos que se podría decir que el operador AND equivale a un par de paréntesis imaginario que encierra los criterios que lo rodean:

WHERE id <= 100 OR (id >= 200 AND ciudad = 'París') OR ciudad = 'Estocolmo'


Tener en cuenta que cada comparación que se realice dentro de la cláusula WHERE debe tener relación entre el tipo de datos al que pertenece el campo comparado y el tipo de datos del valor que se va a comparar, debido a que si se comparan diferentes tipos de datos se generará un error SQL, para más información ver el artículo sobre tipo de datos
 
 



Búsquedas más frecuentes
Lenguaje SQL