Mysql
 sql >> Database >  >> RDS >> Mysql

Condizione WHERE in MySQL con 16 diversi esempi di query

In questo articolo parleremo del WHERE clausola e come usarlo in MySQL. Oltre a SELECT , l'ambito di WHERE la clausola include il UPDATE e DELETE dichiarazioni. Il WHERE è indispensabile per un lavoro di qualità con i database MySQL. Ecco perché il presente articolo tratterà questa clausola ed esplorerà in modo approfondito le sue caratteristiche distintive.

Quando abbiamo a che fare con MySQL, abbiamo bisogno di clausole condizionali per le istruzioni SELECT nella maggioranza assoluta dei casi. Tali clausole determinano i criteri di selezione, quindi otteniamo solo i dati di cui abbiamo bisogno.

MySQL WHERE La clausola è il mezzo più pratico per filtrare i risultati. È flessibile, consentendo agli utenti di specificare varie condizioni per la selezione dei dati e combinare diverse condizioni in un'unica istruzione. Per rendere ancora più piacevole la routine lavorativa quotidiana, è sempre meglio ricorrere alla profilazione MySQL e all'ottimizzazione delle query.

Contenuti

  • Sintassi di MySQL WHERE
  • Utilizzare WHERE in MySQL
  • WHERE query esempio di condizione singola
  • Condizioni WHERE multiple
  • Operatore
  • DOVE E
  • Operatore
  • WHERE OR
  • Utilizzo di AND con condizioni OR
  • WHERE BETWEEN operatore
  • Operatore
  • WHERE LIKE
  • Esempio DOVE NON MI PIACE
  • Operatore
  • WHERE IN
  • DOVE NON IN esempio
  • Operatore WHERE IS NULL
  • Esempio WHERE IS NOT NULL
  • DOVE NON ESISTE
  • DOVE ESISTE
  • Utilizzo della clausola MySQL WHERE con operatori di confronto
  • Riepilogo

MySQL WHERE sintassi

Per cominciare, diamo un'occhiata più da vicino all'utilizzo di WHERE nel SELECT dichiarazione. La sintassi di base è la seguente:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

SELECT … FROM è l'istruzione standard che definisce quali colonne e quale tabella target. Il WHERE la parola chiave identifica i criteri di selezione dei dati. Può essere presente un singolo valore, l'intervallo tra i valori, la sottoquery e più di una condizione.

Automatizza il tuo lavoro con criteri di query. Guardali e modificali visivamente nelle schede separate del nostro visual Strumento di query MySQL dove stai disegnando la tua query. Non è necessario digitare i nomi delle colonne o ricordare regole complesse. Basta selezionare i dati richiesti dagli elenchi e godersi i risultati.

Utilizzo di WHERE in MySQL

MySQL funziona nel modo seguente durante l'esecuzione di SELECT dichiarazione contenente il WHERE clausola:

  1. Valuta il FROM clausola per identificare la tabella di destinazione.
  2. Procedi al WHERE clausola per valutare i criteri per la selezione dei dati.
  3. Controlla il SELECT istruzione per definire le colonne da recuperare.

Nota :Il SELECT l'istruzione spesso include ORDER BY clausola che mette i risultati in ordine crescente o decrescente. Se è così, MySQL lo valuterà alla fine.

Il principio di funzionamento di MySQL WHERE è simile a IF condizione nei linguaggi di programmazione. Confronta i valori che forniamo con quelli della tabella MySQL di destinazione. Quando questi valori corrispondono, RDBMS recupera quei record agli utenti.

Quando la condizione per il WHERE clausola è un valore di testo, mettiamo quel testo tra virgolette singole. Tuttavia, non sono necessarie virgolette per i valori numerici.

SELECT first_name, last_name, city 
FROM Readers
WHERE City = ‘Seattle’;

SELECT * 
FROM Readers
WHERE CustomerID = 24;

Migliora le tue capacità di scripting con il formattatore MySQL avanzato che consente di abbellire il tuo codice per ottenerlo esattamente come ti piace.

Ora, esaminiamo l'utilizzo di WHERE clausola. Coinvolge molti casi specifici. Il modo migliore per esplorarli è fare riferimento a un pratico MySQL WHERE esempio per ogni scenario.

WHERE query esempio di condizione singola

Lo scenario più semplice dell'utilizzo di questa clausola è MySQL WHERE avere un unico criterio per la selezione dei dati. Si supponga che un'azienda voglia recuperare l'elenco dei suoi dipendenti che lavorano nel reparto Assistenza clienti come responsabili dell'assistenza:

SELECT 
    last_name, 
    first_name, 
    job_title
FROM
    employees
WHERE
    jobtitle = 'Support';

La query recupererà i dati dai dipendenti tabella e filtrare i record in base al valore in job_title colonna. Dovrebbe restituire l'elenco di tutti i cognomi e nomi di tutti i dipendenti che lavorano come responsabili dell'assistenza. L'output è il seguente:

last_name first_name job_title
Volpe Maria Supporto
Nero Giovanni Supporto
Johnson Steve Supporto
Hudson Diana Supporto
Williams Katie Supporto
Verde Jake Supporto

Nota :Сode meno e ottieni di più con il controllo della sintassi MySQL. dbForge Studio per MySQL è un IDE ricco di funzionalità progettato per facilitare lo sviluppo, la manutenzione e l'amministrazione di database MySQL e MariaDB.

Condizioni WHERE multiple

L'esempio fornito sopra dimostra che MySQL WHERE clausola porta dati che soddisfano la condizione. In questo caso, ha filtrato tutti quei dipendenti con il titolo di lavoro specificato. Tuttavia, spesso è necessario impostare diversi criteri per recuperare i dati. È fattibile:dobbiamo applicare MySQL WHERE con gli operatori specifici – il AND operatore e il OR operatore.

operatore WHERE AND

Rendiamo un po' più complicato il nostro esempio precedente. Vogliamo l'elenco dei dipendenti che lavorano nel reparto Assistenza, assunti l'anno scorso.

A tal fine, imposteremo due condizioni e le uniremo a AND operatore logico:

SELECT 
    last_name, 
    first_name, 
    job_title,
    hire_year
FROM
    employees
WHERE
    jobtitle = 'Support' AND 
    hire_year = 2021;

L'uscita:

last_name first_name job_title anno_di_assunzione
Volpe Maria Supporto 2021
Nero Giovanni Supporto 2021
Johnson Steve Supporto 2021

La stessa scrittura del codice occupa la parte del leone del tempo totale che dedichi allo sviluppo e all'amministrazione del database. Raddoppia la velocità di codifica con l'editor di codice MySQL Server raffinato e ottimizzato fornito con dbForge Studio per MySQL.

operatore WHERE OR

Usando il OR L'operatore logico è un altro metodo per lavorare con diverse condizioni in MySQL WHERE clausola. Se inviamo questa query, verranno restituiti dati che corrispondono ai criteri impostati.

L'azienda vuole controllare i clienti abituali provenienti da due città. Per questo, specificheremo quelle città e useremo OR operatore.

SELECT 
    lastName, 
    firstName, 
    city 
FROM
    customers
WHERE
    city = 'Seattle' OR 
    city = 'Bellevue';
last_name first_name città
Anderson Maria Seattle
Nero Giovanni Seattle
Thompson Steve Bellevue
Smith Diana Bellevue
Williams Katie Seattle
Peters Jake Seattle

Utilizzo di AND con condizioni OR

MySQL consente di combinare MySQL WHERE AND OR – entrambi gli operatori logici possono essere presenti in una singola istruzione. In questo caso, MySQL verificherà tre condizioni contemporaneamente.

Ad esempio, la biblioteca vuole ottenere informazioni sui suoi lettori che risiedono a Bellevue, che sono diventati lettori abituali della biblioteca nel 2021 o hanno letto più di 20 libri.

In questo caso, MySQL WHERE stringa diventa più complessa. Per adattare e organizzare AND &OR condizioni, usiamo le parentesi per determinare come MySQL deve valutarle.

Dai un'occhiata all'esempio seguente:

SELECT *
FROM readers
WHERE (city = 'Bellevue' AND reg_year = '2020')
OR (books_read > 20);

L'uscita:

last_name first_name città reg_year books_read
Anderson Maria Seattle 2021 25
Jones Chris Bellevue 2020 12
Thompson Lora Seattle 2020 35
Farrell Brian Bellevue 2021 48
Smith Jeff Bellevue 2020 50
Peters Anna Bellevue 2020 10
Patterson Giovanni Bellevue 2020 11

Questo output mostra alcuni risultati corrispondenti alla condizione della città di residenza + anno di registrazione. Include anche risultati che soddisfano la seconda condizione di aver letto più di 20 libri.

WHERE BETWEEN operatore

L'operatore BETWEEN consente di impostare limiti più ampi. Si supponga che la biblioteca voglia ottenere l'elenco dei suoi lettori che si sono uniti nel 2019, 2020 e 2021. Invece di inviare diverse domande o utilizzare il AND operatore, possiamo impostare l'intervallo per il WHERE condizione utilizzando il BETWEEN operatore.

Per recuperare l'elenco dei lettori che si sono iscritti tra il 2019 e il 2022, inviamo la seguente domanda:

SELECT 
    last_Name, 
    first_Name, 
    reg_year
FROM
    readers
WHERE
    reg_year BETWEEN 2019 AND 2021
ORDER BY reg_year;

L'uscita:

last_name first_name reg_year
Anderson Maria 2019
Jones Chris 2019
Thompson Lora 2019
Farrell Brian 2019
Smith Jeff 2020
Peters Anna 2020
Patterson Giovanni 2020
Williams Segna 2021
Escursioni Andrew 2021
Concedi Valentina 2021

operatore WHERE LIKE

L'applicazione dell'operatore LIKE consente di utilizzare la clausola WHERE per selezionare determinati record che includono un modello specifico. Per definire quel modello, utilizziamo il segno di percentuale (%) per sostituire un carattere o una stringa di più caratteri di qualsiasi lunghezza.

I modelli più comuni per MySQL SELECT WHERE LIKE sono i seguenti:

WHERE valore LIKE 'abc% ' – trova e restituisce tutti i valori che iniziano con "abc"

WHERE valore LIKE '%abc' – trova e restituisce tutti i valori che terminano con "abc"

WHERE valore LIKE '%abc%' – trova e restituisce valori con "abc" ovunque tra l'inizio e la fine

Diamo un'occhiata al WHERE LIKE esempio. L'azienda vuole ottenere l'elenco dei suoi clienti dagli Stati Uniti e dal Regno Unito. La query è la seguente:

SELECT ContactName, Country, City
FROM Customers
WHERE Country LIKE 'U%'
ORDER BY ContactName;

L'output è:

ContactName Paese Città
Helen Bennett Regno Unito Cowe
Simon Crowther Regno Unito Londra
Hari Kumar Regno Unito Londra
Howard Snyder USA Eugene
Yoshi Latimer USA Elgin
John Steel USA Walla Walla
Jaime Torres USA San Francisco
Fran Wilson USA Portland

esempio WHERE NOT LIKE

C'è un altro caso in cui è necessario escludere alcuni dati dai risultati. Possiamo usare MySQL WHERE NOT LIKE operatore. Trova e restituisce i dati che non hanno caratteri specifici.

L'azienda desidera un elenco dei suoi clienti di tutti i paesi ad eccezione del Regno Unito e degli Stati Uniti. La sintassi di WHERE NOT LIKE in MySQL apparirà come di seguito:

SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT LIKE 'U%'
ORDER BY Country;

L'uscita:

ContactName Paese Città
Roland Mendel Austria Graz
Georg Pipps Austria Salisburgo
Catherine Dewey Belgio Bruxelles
Carrello Pascale Belgio Charleroi
Elizabeth Lincoln Canada Tsawassen
Yoshi Tannamuri Canada Vancouver
Jean Fresnière Canada Montréal
Jytte Petersen Danimarca København
Palle Ibsen Danimarca Århus
Pirkko Koskitalo Finlandia Oulu
Matti Karttunen Finlandia Helsinki
Annette Roulet Francia Tolosa
Marie Bertrand Francia Parigi
Maria Anders Germania Berlino
Hanna Mooss Germania Mannheim

operatore WHERE IN

Usando il IN e NOT IN le parole chiave sono un'altra opzione per filtrare le righe e recuperare solo una parte dei dati che soddisfa i nostri criteri rigorosi. Lo scopo principale è ridurre il numero di OR clausole in un SELECT dichiarazione.

MySQL WHERE IN fa appello alle righe contenenti i valori che abbiamo specificato per WHERE condizione. Ad esempio, vogliamo recuperare l'elenco dei clienti che risiedono in diversi paesi europei. Il WHERE IN la sintassi è la seguente in MySQL:

SELECT ContactName, Country, City
FROM Customers
WHERE Country IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;

Tieni presente che racchiudiamo i nostri valori che specificano la condizione di ricerca tra parentesi. Nel caso di lavoro con valori di testo, dobbiamo metterli tutti tra virgolette singole. Tuttavia, se i nostri valori sono numerici, li elencheremo senza virgolette singole, ad esempio (25, 35, 45).

L'output del precedente MySQL WHERE IN clausola nel SELECT affermazione è:

ContactName Paese Città
Catherine Dewey Belgio Bruxelles
Carrello Pascale Belgio Charleroi
Frédérique Citeaux Francia Strasburgo
Laurence Lebihans Francia Marsiglia
Janine Labrune Francia Nantes
Martine Rancé Francia Lilla
Alexander Feuer Germania Lipsia
Henriette Pfalzheim Germania Köln
Horst Kloss Germania Cunewalde
Karin Josephs Germania Münster
Rita Müller Germania Stoccarda
Thomas Hardy Regno Unito Londra
Victoria Ashworth Regno Unito Londra
Elizabeth Brown Regno Unito Manchester
Ann Devon Regno Unito Londra

WHERE NOT IN esempio

Il caso opposto è MySQL WHERE NOT IN clausola. Viene utilizzato per assicurarsi che la query ignori le righe contenenti i valori specificati per la condizione. Nell'esempio sopra, abbiamo richiesto clienti dai 4 paesi europei definiti. Il MySQL WHERE NOT IN SELECT query per la stessa richiesta restituirà tutti i clienti residenti in altri paesi ad eccezione di quelli 4 definiti in precedenza.

SELECT ContactName, Country, City
FROM Customers
WHERE Country NOT IN ('Belgium', 'France', 'Germany', 'UK')
ORDER BY Country;

L'uscita:

ContactName Paese Città
Patricio Simpson Argentina Buenos Aires
Sergio Gutiérrez Argentina Buenos Aires
Brian Citeaux Canada Montréal
Laura Smith Canada Toronto
Jane Green Canada Toronto
Martine Rancé Canada Vancouver
Alexander Feuer Canada Århus
Paolo Accorti Italia Roma
Giovanni Rovelli Italia Torino
Anna Moroni Italia Pavia

Nota :Ti consigliamo di utilizzare [NOT] EXISTS su [NOT] IN poiché EXISTS l'operatore logico funziona più velocemente di IN , quando si confrontano i set di dati utilizzando una sottoquery. Inoltre, NOT EXISTS eviterà risultati imprevisti quando i dati di origine contengono NULL valori.

Operatore WHERE IS NULL

Per verificare se un valore è NULL oppure no, usa IS NULL operatore. La seguente istruzione usa il WHERE clausola con IS NULL operatore per ottenere le righe senza un valore in books_read colonna:

SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NULL;

L'output sarà simile a questo:

last_name first_name reg_year books_read
Janett Overacker 2020 NULL
Lidia Swenson 2017 NULL
Albert Crepeau 2018 NULL
Anastasia Johnson 2021 NULL
Sarà Smith 2017 NULL

WHERE IS NOT NULL esempio

A differenza del comando precedente, WHERE IS NOT NULL , al contrario, mostra solo quelle righe che contengono una sorta di valore nella colonna in questione. Nell'esempio seguente, selezioneremo solo le righe in cui books_read la colonna non è vuota:

SELECT last_name, first_name, reg_year, books_read
FROM readers
WHERE books_read IS NOT NULL;

Nell'output vedrai solo le righe che contengono un valore in books_read colonna:

last_name first_name reg_year books_read
Cory Baster 2021 8
Maddison Winston 2022 3
Isabella Garsia 2014 45
Jeremy Koh 2022 1
Aaron Peterson 2021 15

WHERE EXISTS

Il EXISTS operator checks if the subquery returns any value at all. Typically, this operator is used to indicate that at least one row in a table satisfies a certain condition.

In the example below,

SELECT last_name, first_name
FROM customers
WHERE EXISTS 
(SELECT * FROM discounts WHERE customers.id = discounts.customer_id)

WHERE NOT EXISTS

However, the NOT EXISTS operator is there for us in case we want to make sure whether there are rows in the table that do not satisfy a certain condition. For example, let’s find all products from the Products table for which there were no orders in the Orders table:

SELECT last_name, first_name
FROM customers
WHERE NOT EXISTS 
(SELECT * FROM discounts WHERE customers.id = discounts.customer_id)

There is a separate article in our blog for those willing to learn more about the difference between EXISTS and NOT EXISTS in SQL.

Using MySQL WHERE clause with comparison operators

As we know, the WHERE condition value can be any number, text, string, or subquery. Besides specifying the condition strictly, we can set a wider meaning for it by using the comparison operators. One example of a similar function is using the BETWEEN operatore. Now, let us review other options to set the condition range.

Operator Description Example
= Equal to the value. It is applicable for almost any data type. SELECT * FROM VisitorsWHERE City =’London’;
<> or != Not equal to. It excludes the rows matching the value from the results. SELECT * FROM CustomersWHERE Country=’Germany’ AND City !=’Berlin’;
< Less than. Mostly applies to numbers and date/time. SELECT * FROM CustomersWHERE CustomerID <7;
> Greater than. Works in the same way, for numeric values and date/time. SELECT * FROM CustomersWHERE CustomerID> 10;
<= Less than or equal to. The results set includes the rows with the same values or less than the condition value. SELECT * FROM CustomersWHERE CustomerID <=5;
>= Greater than or equal to. The result set includes rows having the same values exceeding the condition values. SELECT * FROM CustomersWHERE CustomerID>=55;

In our example, we want to retrieve the list of customers with a customer ID lower than 90 who reside in the USA. The query is the following:

SELECT CustomerID, ContactName, City, Country 
FROM Customers
WHERE CustomerID < 90 AND Country ='USA';

The output is:

CustomerID ContactName City Country
65 Paula Wilson Albuquerque USA
55 Rene Phillips Anchorage USA
78 Liu Wong Butte USA
36 Yoshi Latimer Elgin USA
32 Howard Snyder Eugene USA
82 Helvetius Nagy Kirkland USA
48 Fran Wilson Portland USA
77 Liz Nixon Portland USA
45 Jaime Torres San Francisco USA
89 Karl Jablonski Seattle USA
55 Rene Phillips Anchorage USA

Summary

As you see, MySQL WHERE is among the most helpful clauses for all MySQL users. The variety of different logical operators lets you focus on the specific portion of data only, filter it correctly, and receive the results you need. Besides, modern professional tools for MySQL databases allow you to perform all tasks faster and easier. They take the burden of manual routines off your shoulders and make the performance much more stable and reliable. To sum up, working with a WHERE statement is not too complicated. However, it requires being familiar with the corresponding commands. The command-line tools are more oriented toward experienced tech-savvy users. On the contrary, dbForge Studio for MySQL can boast an intuitive graphical interface. The intelligent code completion feature will be of use while working with the WHERE clause, navigating the code, obtaining quick object information, and instantly performing syntax checks. Moreover, dbForge Query Builder will be of use to easily build WHERE clauses visually.

Useful Links

  • Joins in MySQL
  • MySQL update query