Vés al contingut

Where (SQL)

De la Viquipèdia, l'enciclopèdia lliure

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