sql >> Databasteknik >  >> RDS >> Mysql

WHERE-tillstånd i MySQL med 16 olika frågeexempel

I den här artikeln kommer vi att prata om WHERE klausul och hur man använder den i MySQL. Förutom SELECT , omfattningen av WHERE klausulen innehåller UPDATE och DELETE uttalanden. WHERE klausul är oumbärlig för kvalitetsarbete med MySQL-databaser. Det är därför den aktuella artikeln kommer att behandla denna klausul och utforska dess utmärkande egenskaper på djupet.

När vi hanterar MySQL behöver vi villkorliga satser för SELECT-satserna i de absoluta majoriteten av fallen. Sådana klausuler bestämmer urvalskriterierna, så vi får bara den information vi behöver.

MySQL WHERE klausul är det smidigaste sättet att filtrera resultat. Det är flexibelt, vilket gör att användarna kan specificera olika villkor för dataurvalet och kombinera flera villkor i ett uttalande. För att göra din vardagliga arbetsrutin ännu trevligare är det alltid bättre att ta till MySQL-profilering och frågeoptimering.

Innehåll

  • MySQL WHERE-syntax
  • Använda WHERE i MySQL
  • WHERE-förfrågan med enstaka villkor
  • Flera WHERE-villkor
  • VAR OCH operatör
  • WHERE OR operator
  • Använda AND med ELLER-villkor
  • VAR MELLAN operatör
  • WHERE LIKE operator
  • WHERE NOT LIKE-exempel
  • WHERE IN-operatör
  • WHERE NOT I-exempel
  • WHERE IS NULL-operatorn
  • WHERE IS NOT NULL-exempel
  • DÄR INTE FINNS
  • VAR FINNS
  • Använda MySQL WHERE-sats med jämförelseoperatorer
  • Sammanfattning

MySQL WHERE-syntax

Till att börja med, låt oss titta närmare på hur du använder WHERE i SELECT påstående. Den grundläggande syntaxen är följande:

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

SELECT … FROM är standardsatsen som definierar vilka kolumner och vilken tabell vi riktar in oss på. WHERE nyckelordet identifierar dataurvalskriterierna. Det kan finnas ett enda värde, intervallet mellan värden, underfrågan och mer än ett villkor.

Automatisera ditt arbete med frågekriterier. Se och redigera dem visuellt på de separata flikarna i vår visuella MySQL-frågeverktyg där du ritar din fråga. Du behöver inte skriva in kolumnernas namn eller komma ihåg komplicerade regler. Välj bara nödvändig information från listorna och njut av resultaten.

Använda WHERE i MySQL

MySQL fungerar på följande sätt när du kör SELECT sats som innehåller WHERE klausul:

  1. Utvärdera FROM sats för att identifiera måltabellen.
  2. Fortsätt till WHERE klausul för att utvärdera kriterierna för dataurval.
  3. Kontrollera SELECT uttalande för att definiera kolumnerna som ska hämtas.

Obs :SELECT uttalandet innehåller ofta ORDER BY klausul som sätter resultaten i stigande eller fallande ordning. Om så är fallet kommer MySQL att utvärdera det till slut.

Arbetsprincipen för MySQL WHERE liknar IF skick i programmeringsspråk. Den jämför de värden vi tillhandahåller med de i måltabellen MySQL. När dessa värden matchar, hämtar RDBMS dessa poster till användarna.

När villkoret för WHERE sats är ett textvärde, vi sätter den texten i enstaka citattecken. Dock behövs inga citattecken för de numeriska värdena.

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

SELECT * 
FROM Readers
WHERE CustomerID = 24;

Uppgradera dina skriptförmågor med den avancerade MySQL-formateraren som gör det möjligt att försköna din kod för att få den precis som du vill ha den.

Låt oss nu granska användningen av WHERE klausul. Det handlar om många specifika fall. Det bästa sättet att utforska dem är att hänvisa till en praktisk MySQL WHERE exempel för varje scenario.

WHERE-frågeexempel med ett villkor

Det enklaste scenariot för att använda den här klausulen är MySQL WHERE ha ett enda kriterium för dataurvalet. Antag att något företag vill hämta listan över sina anställda som arbetar på Customer Care-avdelningen som supportchefer:

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

Frågan kommer att hämta data från anställda tabell och filtrera posterna enligt värdet i jobbtitel kolumn. Den ska returnera listan över alla efter- och förnamn på alla anställda som arbetar som stödchefer. Utdata är nedan:

efternamn förnamn jobbtitel
Räv Mary Support
Svart John Support
Johnson Steve Support
Hudson Diana Support
Williams Katie Support
Grön Jake Support

Obs :Koda mindre och uppnå mer med MySQL-syntaxkontroll. dbForge Studio för MySQL är en funktionsrik IDE designad för att underlätta utveckling, underhåll och administration av MySQL och MariaDB-databas.

Flera WHERE-villkor

Exemplet ovan bevisar att MySQL WHERE klausul ger data som matchar villkoret. I det här fallet filtrerades alla de anställda med den angivna befattningen. Vi behöver dock ofta ställa in flera kriterier för att hämta data. Det är möjligt – vi måste använda MySQL WHERE med de specifika operatorerna – AND operatorn och OR operatör.

WHERE AND operator

Låt oss göra vårt tidigare exempel lite mer komplicerat. Vi vill ha listan över medarbetare som arbetar på Supportavdelningen, anställd förra året.

För att uppnå det kommer vi att ställa in två villkor och förena dem med AND logisk operator:

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

Utdata:

efternamn förnamn jobbtitel anställningsår
Räv Mary Support 2021
Svart John Support 2021
Johnson Steve Support 2021

Kodskrivningen i sig tar upp lejonparten av den totala tiden du lägger på databasutveckling och administration. Dubbla din kodningshastighet med den förfinade och optimerade MySQL Server-kodredigeraren som följer med dbForge Studio för MySQL.

WHERE OR operator

Använd OR logisk operator är en annan metod för att arbeta med flera villkor i MySQL WHERE klausul. Om vi ​​skickar den här frågan kommer den att returnera data som matchar de kriterier vi ställer in.

Företaget vill kontrollera stamkunderna som kommer från två städer. För det anger vi dessa städer och använder OR operatör.

SELECT 
    lastName, 
    firstName, 
    city 
FROM
    customers
WHERE
    city = 'Seattle' OR 
    city = 'Bellevue';
efternamn förnamn stad
Anderson Mary Seattle
Svart John Seattle
Thompson Steve Bellevue
Smith Diana Bellevue
Williams Katie Seattle
Peters Jake Seattle

Använda AND med ELLER-villkor

MySQL gör det möjligt att kombinera MySQL WHERE AND OR – Båda logiska operatorerna kan finnas i ett enda uttalande. I det här fallet kommer MySQL att kontrollera tre villkor samtidigt.

Till exempel vill biblioteket få information om sina läsare som bor i Bellevue, som blev bibliotekets vanliga läsare 2021 eller har läst mer än 20 böcker.

I det här fallet, MySQL WHERE strängen blir mer komplex. För att passa och organisera AND &OR villkor använder vi parenteserna för att avgöra hur MySQL måste utvärdera dem.

Ta en titt på exemplet nedan:

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

Utdata:

efternamn förnamn stad reg_år books_read
Anderson Mary 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 John Bellevue 2020 11

Denna utdata visar några resultat som matchar bosättningsstadens skick + registreringsår. Den innehåller också resultat som matchar det andra villkoret att ha läst mer än 20 böcker.

WHERE MELLAN operator

MELLAN-operatören gör det möjligt att sätta bredare gränser. Antag att biblioteket vill få listan över sina läsare som gick med 2019, 2020 och 2021. Istället för att skicka flera frågor eller använda AND operatör kan vi ställa in intervallet för WHERE villkor med BETWEEN operatör.

För att hämta listan över läsare som går med mellan 2019 och 2022 skickar vi följande fråga:

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

Utdata:

efternamn förnamn reg_år
Anderson Mary 2019
Jones Chris 2019
Thompson Lora 2019
Farrell Brian 2019
Smith Jeff 2020
Peters Anna 2020
Patterson John 2020
Williams Markera 2021
Hiks Andrew 2021
Bevilja Valentina 2021

WHERE LIKE operator

Genom att använda LIKE-operatorn kan du använda WHERE-satsen för att välja vissa poster som innehåller ett specifikt mönster. För att definiera det mönstret använder vi procenttecknet (%) för att ersätta ett tecken eller en sträng med flera tecken av valfri längd.

De vanligaste mönstren för MySQL SELECT WHERE LIKE är följande:

WHERE värde LIKE 'abc% ’ – hittar och returnerar alla värden som börjar med "abc"

WHERE värde LIKE '%abc' – hittar och returnerar alla värden som slutar med "abc"

WHERE värde LIKE '%abc%' – hittar och returnerar värden som har "abc" var som helst mellan början och slutet

Låt oss ta en titt på WHERE LIKE exempel. Företaget vill få listan över sina kunder från USA och Storbritannien. Frågan är som följer:

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

Utdata är:

Kontaktnamn Land Stad
Helen Bennett Storbritannien Cowes
Simon Crowther Storbritannien London
Hari Kumar Storbritannien London
Howard Snyder USA Eugene
Yoshi Latimer USA Elgin
John Steel USA Walla Walla
Jaime Torres USA San Francisco
Fran Wilson USA Portland

WHERE NOT LIKE exempel

Det finns ett annat fall där du behöver utesluta vissa data från resultaten. Vi kan använda MySQL WHERE NOT LIKE operatör. Den hittar och returnerar data som inte har specifika tecken.

Företaget vill ha en lista över sina kunder från alla länder utom Storbritannien och USA. Syntaxen för WHERE NOT LIKE i MySQL kommer att se ut som nedan:

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

Utdata:

Kontaktnamn Land Stad
Roland Mendel Österrike Graz
Georg Pipps Österrike Salzburg
Catherine Dewey Belgien Bruxelles
Pascale Cartrain Belgien Charleroi
Elizabeth Lincoln Kanada Tsawassen
Yoshi Tannamuri Kanada Vancouver
Jean Fresnière Kanada Montréal
Jytte Petersen Danmark Köbenhavn
Palle Ibsen Danmark Århus
Pirkko Koskitalo Finland Oulu
Matti Karttunen Finland Helsingfors
Annette Roulet Frankrike Toulouse
Marie Bertrand Frankrike Paris
Maria Anders Tyskland Berlin
Hanna Mooss Tyskland Mannheim

WHERE IN-operatör

Använda IN och NOT IN nyckelord är ett annat alternativ för att filtrera raderna och bara hämta en del av data som matchar våra strikta kriterier. Det primära syftet är att minska antalet OR satser i en SELECT påstående.

MySQL WHERE IN vädjar till raderna som innehåller värdena vi angett för WHERE tillstånd. Vi vill till exempel hämta listan över kunder som bor i flera europeiska länder. WHERE IN syntaxen är följande i MySQL:

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

Observera att vi bifogar våra värden som anger sökvillkoret inom parentes. När vi arbetar med textvärden måste vi sätta dem alla i enstaka citattecken. Men om våra värden är numeriska, listar vi dem utan enstaka citattecken, t.ex. (25, 35, 45).

Utdata från ovanstående MySQL WHERE IN sats i SELECT uttalandet är:

Kontaktnamn Land Stad
Catherine Dewey Belgien Bruxelles
Pascale Cartrain Belgien Charleroi
Frédérique Citeaux Frankrike Strasbourg
Laurence Lebihans Frankrike Marseille
Janine Labrune Frankrike Nantes
Martine Rancé Frankrike Lille
Alexander Feuer Tyskland Leipzig
Henriette Pfalzheim Tyskland Köln
Horst Kloss Tyskland Cunewalde
Karin Josephs Tyskland Münster
Rita Müller Tyskland Stuttgart
Thomas Hardy Storbritannien London
Victoria Ashworth Storbritannien London
Elizabeth Brown Storbritannien Manchester
Ann Devon Storbritannien London

WHERE NOT I exempel

Det motsatta fallet är MySQL WHERE NOT IN klausul. Den används för att säkerställa att din fråga ignorerar de rader som innehåller de värden som anges för villkoret. I exemplet ovan efterfrågade vi kunder från de fyra bestämda europeiska länderna. MySQL WHERE NOT IN SELECT fråga för samma begäran kommer att returnera alla kunder som bor i andra länder förutom de 4 som definierats tidigare.

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

Utdata:

Kontaktnamn Land Stad
Patricio Simpson Argentina Buenos Aires
Sergio Gutiérrez Argentina Buenos Aires
Brian Citeaux Kanada Montréal
Laura Smith Kanada Toronto
Jane Green Kanada Toronto
Martine Rancé Kanada Vancouver
Alexander Feuer Kanada Århus
Paolo Accorti Italien Rom
Giovanni Rovelli Italien Torino
Anna Moroni Italien Pavia

Obs :Vi rekommenderar att du använder [NOT] EXISTS över [NOT] IN eftersom EXISTS logisk operator fungerar snabbare än IN , när man jämför datamängder med hjälp av en underfråga. Dessutom NOT EXISTS kommer att undvika oväntade resultat när källdata innehåller NULL värden.

WHERE IS NULL operator

För att kontrollera om ett värde är NULL eller inte, använd IS NULL operatör. Följande sats använder WHERE sats med IS NULL operatorn för att hämta raderna utan ett värde i books_read kolumn:

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

Utdatan kommer att se ut så här:

efternamn förnamn reg_år books_read
Janett Overacker 2020 NULL
Lidia Swenson 2017 NULL
Albert Crepeau 2018 NULL
Anastasia Johnson 2021 NULL
Kommer Smith 2017 NULL

WHERE IS NOT NULL exempel

Till skillnad från föregående kommando, WHERE IS NOT NULL , tvärtom, visar bara de rader som innehåller något slags värde i kolumnen i fråga. I följande exempel kommer vi bara att välja de rader där books_read kolumnen är inte tom:

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

I utgången ser du bara de rader som innehåller ett värde i books_read kolumn:

efternamn förnamn reg_år books_read
Cory Baster 2021 8
Maddison Winston 2022 3
Isabella Garsia 2014 45
Jeremy Koh 2022 1
Aaron Peterson 2021 15

WHERE EXISTS

The 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 operator. 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

  1. Kan inte öppna användarens standarddatabas. Inloggningen misslyckades. efter installation av SQL Server Management Studio Express

  2. Fix:"Okänd tabell 'locales' i informationsschema" i MariaDB

  3. MariaDB JSON_REPLACE() Förklarad

  4. Vad är AWS RDS