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 in MySQL
clausola WHERE in MySQL

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 email
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.

Diamo ora un'occhiata a un esempio pratico: supponiamo di voler ottenere un elenco di tutti i film della categoria 2 usciti nel 2008, per raggiungere questo obiettivo utilizzeremo lo script mostrato di seguito.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Eseguendo lo script precedente in MySQL workbench su “myflixdb” produce i seguenti risultati.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

Clausola WHERE combinata con – OR LOGICO Operator

La clausola WHERE, se utilizzata insieme all'operatore OR, viene eseguita solo se viene soddisfatto uno o tutti i criteri di filtro specificati.
Lo script seguente ottiene tutti i film nella categoria 1 o nella categoria 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Eseguendo lo script precedente in MySQL workbench su “myflixdb” produce i seguenti risultati.
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

Il DOVE dentro MySQL clausola, se utilizzata insieme alla parola chiave IN influisce solo sulle righe i cui valori corrispondono all'elenco di valori forniti nella parola chiave IN. IL MySQL L'istruzione IN aiuta a ridurre il numero di clausole OR che potresti dover utilizzare.
Le seguenti MySQL La query WHERE IN fornisce righe in cui membership_number è 1, 2 o 3
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 email
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

La clausola WHERE, se utilizzata insieme alla parola chiave NOT IN, NON influisce sulle righe i cui valori corrispondono all'elenco di valori forniti nella parola chiave NOT IN.
La query seguente fornisce le righe in cui membership_number NON è 1, 2 o 3
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 email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

Clausola WHERE combinata con – CONFRONTO OperaTors

Gli operatori di confronto minore di (), uguale a (=), diverso da () possono essere utilizzati con la clausola WHERE

= Uguale a

Lo script seguente ottiene tutti i membri femminili dalla tabella dei membri utilizzando l'operatore di confronto 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 email
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

Lo script seguente ottiene tutti i pagamenti superiori a 2,000 dalla tabella dei pagamenti.
SELECT * FROM `pagamenti` WHERE `importo_pagato` > 2000;
Eseguendo lo script precedente in MySQL workbench su “myflixdb” produce i seguenti risultati.
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

Lo script seguente recupera tutti i film il cui ID di categoria è diverso da 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Eseguendo lo script precedente in MySQL workbench su “myflixdb” produce i seguenti risultati.
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

Supponiamo di voler ottenere l'elenco dei film noleggiati che non sono stati restituiti entro il termine del 25/06/2012. Per raggiungere questo obiettivo è possibile utilizzare la clausola dell'istruzione SQL WHERE insieme all'operatore di confronto minore di e all'operatore logico AND.
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