MySQL Clausola WHERE: AND, OR, IN, NOT IN Esempio di query
Qual è la clausola WHERE in MySQL?
Dove la clausola in MySQL è una parola chiave usata per specificare i criteri esatti di dati o righe che saranno interessati dall'istruzione SQL specificata. La clausola WHERE può essere usata con istruzioni SQL come INSERT, UPDATE, SELECT e DELETE per filtrare i record ed eseguire varie operazioni sui dati.
Abbiamo esaminato come interrogare i dati da a banca dati utilizzando l'istruzione SELECT nell'esercitazione precedente. L'istruzione SELECT ha restituito tutti i risultati dalla tabella del database interrogata.
Ci sono tuttavia momenti in cui vogliamo limitare i risultati della query a una condizione specifica. La clausola WHERE in SQL è utile in tali situazioni.
Clausola WHERE Sintassi
La sintassi di base per la clausola WHERE quando utilizzata in a MySQL L'istruzione SELECT WHERE è la seguente.
SELECT * FROM tableName WHERE condition;
QUI
- “SELEZIONA * DA nometabella” è lo standard Istruzione SELECT
- "DOVE" è la parola chiave che limita il nostro set di risultati di query selezionati e "condizione" è il filtro da applicare sui risultati. Il filtro potrebbe essere un intervallo, un valore singolo o una sottoquery.
Consideriamo ora a esempio pratico.
Supponiamo di voler ottenere i dati personali di un membro dalla tabella dei membri, dato il numero di iscrizione 1. Per riuscirci, utilizzeremo lo script seguente.
SELECT * FROM `members` WHERE `membership_number` = 1;
Eseguendo lo script precedente in MySQL banco di lavoro su “myflixdb” produrrebbe i seguenti risultati.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
Clausola WHERE combinata con – E LOGICO Operator
La condizione DOVE in MySQL se utilizzato insieme all'operatore logico AND, viene eseguito solo se vengono soddisfatti TUTTI i criteri di filtro specificati.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
Clausola WHERE combinata con – OR LOGICO Operator
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
Clausola WHERE combinata con – IN Parola chiave
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Eseguendo lo script precedente in MySQL workbench su “myflixdb” produce i seguenti risultati.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
Clausola WHERE combinata con – NON IN Parola chiave
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Eseguendo lo script precedente in MySQL workbench su “myflixdb” produce i seguenti risultati.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Clausola WHERE combinata con – CONFRONTO OperaTors
= Uguale a
SELECT * FROM `members` WHERE `gender` = 'Female';
Eseguendo lo script precedente in MySQL workbench su “myflixdb” produce i seguenti risultati.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
> Maggiore di
payment_id | membership_number | payment_date | description | amount_paid | external_reference_number |
---|---|---|---|---|---|
1 | 1 | 23-07-2012 | Movie rental payment | 2500 | 11 |
3 | 3 | 30-07-2012 | Movie rental payment | 6000 | NULL |
< > Non uguale a
SELECT * FROM `movies` WHERE `category_id`<> 1;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
5 | Daddy's Little Girls | NULL | 2007 | 8 |
6 | Angels and Demons | NULL | 2007 | 6 |
7 | Davinci Code | NULL | 2007 | 6 |
9 | Honey mooners | John Schultz | 2005 | 8 |
Sommario
- La clausola SQL WHERE viene utilizzata per limitare il numero di righe interessate da un SELECT, UPDATE o ELIMINA query.
- La condizione WHERE in SQL può essere utilizzata insieme a operatori logici come AND e OR, operatori di confronto come ,= ecc.
- Se utilizzato con AND operatore logico, tutti i criteri devono essere soddisfatti.
- Se utilizzato con l'operatore logico OR, è necessario soddisfare uno qualsiasi dei criteri.
- La parola chiave IN viene utilizzata per selezionare le righe che corrispondono a un elenco di valori.
Rompicapo
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Eseguendo lo script precedente in MySQL workbench fornisce i seguenti risultati.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |