Consultes senzilles - AND - OR - NOT
Comparacions lògiques
En SQL podem posar més d’una condició a la directiva WHERE.
Aquestes condicions admeten els operadors:
-
AND: torna cert quan les dues condicions son certes -
OR: torna cert quan una de les condicions és certa -
NOT: torna cert quan la condició és falsa.
Operador AND
La següent consulta retorna les files que compleixen les dues condicions especificades a la clàusula WHERE.
Un exemple de l'ús de AND
SELECT LAST_NAME, DEPARTMENT_ID, SALARY
FROM employees
WHERE DEPARTMENT_ID > 50 AND SALARY > 12000;
+-----------+---------------+----------+
| LAST_NAME | DEPARTMENT_ID | SALARY |
+-----------+---------------+----------+
| King | 90 | 24000.00 |
| Kochhar | 90 | 17000.00 |
| De Haan | 90 | 17000.00 |
+-----------+---------------+----------+
Un altre exemple de l'ús de AND
SELECT LAST_NAME, HIRE_DATE, JOB_ID
FROM employees
WHERE HIRE_DATE > '1998-01-01' AND JOB_ID LIKE 'SA%';
+-----------+------------+--------+
| LAST_NAME | HIRE_DATE | JOB_ID |
+-----------+------------+--------+
| Zlotkey | 2000-01-29 | SA_MAN |
| Taylor | 1998-03-24 | SA_REP |
| Grant | 1999-05-24 | SA_REP |
+-----------+------------+--------+
Operador OR
La següent consulta retorna les files que compleixen qualsevol de les dues condicions especificades a la clàusula WHERE.
Un exemple de l'ús de OR
SELECT DEPARTMENT_NAME, MANAGER_ID, LOCATION_ID
FROM departments
WHERE LOCATION_ID = 2500 OR MANAGER_ID=124;
+-----------------+------------+-------------+
| DEPARTMENT_NAME | MANAGER_ID | LOCATION_ID |
+-----------------+------------+-------------+
| Shipping | 124 | 1500 |
| Sales | 149 | 2500 |
+-----------------+------------+-------------+
Operador NOT
La següent consulta retorna les files que no compleixen la condició especificada a la clàusula WHERE.
Un exemple de l'ús de NOT
SELECT DEPARTMENT_NAME, LOCATION_ID
FROM departments
WHERE LOCATION_ID NOT IN (1700,1800);
+-----------------+-------------+
| DEPARTMENT_NAME | LOCATION_ID |
+-----------------+-------------+
| Shipping | 1500 |
| IT | 1400 |
| Sales | 2500 |
+-----------------+-------------+
Regles de prioritat
| ORDRE | OPERADORS |
|---|---|
| 1 | Aritmètics: * / % |
| 2 | Aritmètics: + - |
| 3 | Comparació < <= > >= = <> |
| 4 | IS [NOT] NULL, [NOT] LIKE, [NOT] IN |
| 5 | [NOT] BETWEEN |
| 6 | NOT |
| 7 | AND |
| 8 | OR |
* Dos operadors de la mateixa prioritat s’avaluaran d’esquerra a dreta
Exemple de prioritat
SELECT CONCAT_WS(' ',LAST_NAME,
SALARY*1.05) AS "Nou Sou",
DEPARTMENT_ID, FIRST_NAME
FROM employees
WHERE DEPARTMENT_ID IN(50,80) AND -- 1r AND
FIRST_NAME LIKE 'C%' OR -- 2n OR
LAST_NAME LIKE '%z%';
+--------------------+---------------+------------+
| Nou Sou | DEPARTMENT_ID | FIRST_NAME |
+--------------------+---------------+------------+
| Lorentz 4410.0000 | 60 | Diana |
| Davies 3255.0000 | 50 | Curtis |
| Zlotkey 11025.0000 | 80 | Eleni |
| Gietz 8715.0000 | 110 | William |
+--------------------+---------------+------------+
La condició s'avalua de la següent forma
WHERE (DEPARTMENT_ID IN(50,80) AND FIRST_NAME LIKE 'C%') OR
LAST_NAME LIKE '%z%';