English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Operatore AND & OR in SQL

In questo tutorial, imparerai come utilizzare gli operatori AND & OR nelle clause WHERE per filtrare i record in base a più condizioni.

Selezione dei record in base alle condizioni

Nell'ultimo capitolo, abbiamo imparato come ottenere record dalla tabella utilizzando una condizione singola con la clause WHERE. Ma a volte hai bisogno di filtrare i record in base a più condizioni, come selezionare gli utenti con età superiore ai 30 anni e regione USA, o i prodotti con prezzo inferiore a 100 dollari e valutazione superiore a 4, ecc.

Operatore AND

L'operatore AND è un operatore logico che combina due condizioni e restituisce TRUE solo se entrambe le condizioni hanno il risultato TRUE. Di solito inSELECT,UPDATE,DELETEdelWHEREUtilizzo dell'operatore AND nelle clause per formare condizioni che filtrino i risultati.

SELECT column1_name, column2_name, columnN_nameFROM table_nameWHERE condition1 AND condition2;

Ecco alcuni esempi per dimostrare come funziona nella pratica.

Supponiamo di avere un database con un nomeemployeescontenente i seguenti record:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |   5000 |       4 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
|      5 | Martin Blank | 2008-06-24 |   5600 |    NULL |
+--------+--------------+------------+--------+---------+

Utilizzo delle clause con gli operatori WHERE e AND

La seguente query SQL recupererà soloemployeesLa tabella restituirà i salari (salary) superiori a 7000 edept_idGli impiegati con un numero di dipartimento uguale a 5.

SELECT * FROM employees
WHERE salary > 7000 AND dept_id = 5;

Dopo l'esecuzione, otterrai il seguente output:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
+--------+--------------+------------+--------+---------+

Operatore OR

Anche l'operatore OR è un operatore logico che combina due condizioni, ma restituisce TRUE se almeno una delle due condizioni è TRUE.

La seguente query SQL recupereràemployeesLa tabella restituirà i salari (salary) superiori a 7000 odept_idTutti gli impiegati con un numero di dipartimento uguale a 5.

SELECT * FROM employees
WHERE salary > 7000 OR dept_id = 5;

Questa volta otterrai il seguente output:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       3 |
+--------+--------------+------------+--------+---------+

Utilizzo contemporaneo degli operatori AND e OR

Puoi combinare AND e OR per creare espressioni condizionali complesse.

La seguente query SQL restituirà i salari superiori a 5000 e anchedept_idTutti gli impiegati con un numero di dipartimento uguale a 1 o 5.

SELECT * FROM employees
WHERE salary > 5000 AND (dept_id = 1 OR dept_id = 5);

查询上面的执行完毕后,您将获得如下输出:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      2 | Tony Montana | 2002-07-15 |   6500 |       1 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       5 |
+--------+--------------+------------+--------+---------+