Where (SQL)
La clàusula WHERE en SQL determina que una instrucció Data Manipulation Language (DML) només afecta a aquelles files que compleixen els criteris especificats en la clàusula Where. Els criteris s'expressen en forma de predicats. La clàusula WHERE
no és obligatoria en les sentències DML, però es pot utilitzar per limitar el nombre de files afectades per la instrucció o retornades per la consulta. En resum, la clau WHERE s'utilitza per limitar els resultats en sentències del tipus SELECT, INSERT, UPDATE o DELETE.[1]
Així doncs, WHERE
és una paraula reservada en SQL. La forma general és la següent: Sentència-SQL-DML FROM nom_taula WHERE predicat
El conjunt de files que compleixen el predicat del WHERE
(és a dir, que són Cert) es veuran afectades (o retornades) per la sentència. Per altra banda, aquelles files que l'avaluació del predicat és Fals o Desconegut (NULL) no es veuran afectades.
La sentència SELECT
següent retorna només aquelles files de la taula "laMevaTaula" que el camp "laColumna" té un valor superior a 100.
SELECT *
FROM laMevaTaula
WHERE laColumna > 100
La sentència DELETE
següent elimina aquelles files de la taula "laMevaTaula" on el camp "laColumna" és NULL o el seu valor és igual a 100.
DELETE
FROM laMevaTaula
WHERE laColumna IS NULL OR laColumna = 100
Predicats
[modifica]Els predicats utilitzen sovint múltiples operadors com: =
, <>
, >
, >=
, <
, <=
, IN
, BETWEEN
, LIKE
, IS NULL
or IS NOT NULL
. Per exemple, WHERE laColumna IN ('casa', 'arbre')
. Els predicats es poden embolcallar amb parèntesis si així es requereix. Les paraules claus AND
i OR
es poden utilitzar per combinar dos predicats en un únic. Es poden utilitzar els parèntesis per agrupar combinacions i indicar l'ordre d'avaluació quan s'apliquen múltiples combinacions.
El següent exemple elimina aquelles files de la taula "laMevaTaula" on el valor de "laColumna" és més gran que 100 i (AND) el valor del camp "element" és igual al literal 'Cotxe':
DELETE
FROM laMevaTaula
WHERE laColumna > 100 AND element = 'Cotxe'
IN
[modifica]IN
troba qualsevol valor que existeixi en un conjunt de candidats. Per exemple, SELECT camp1 FROM taula WHERE camp1 IN ('valor1', 'valor2')
. En aquest cas, retornarà el camp camp1 de totes aquelles files que facin parella el camp ename amb un dels valors del conjunt. (valor1, valor2…). La sentència següent equivalent a l'anterior:
SELECT ename WHERE ename='value1' OR ename='value2'
BETWEEN
[modifica]BETWEEN
troba qualsevol valor en un rang. En els següents exemples, el predicat avalua Cert si el valor del camp "ename" pren un valor entre "value1" i "value2".
SELECT ename WHERE ename BETWEEN 'valor1' AND 'valor2'
SELECT salari from empleat WHERE salari BETWEEN 5000 AND 10000
Referències
[modifica]