sql >> Databáze >  >> RDS >> Mysql

Podmínka WHERE v MySQL s 16 různými příklady dotazů

V tomto článku budeme hovořit o WHERE klauzule a jak ji používat v MySQL. Kromě SELECT , rozsah WHERE klauzule obsahuje UPDATE a DELETE prohlášení. WHERE klauzule je nepostradatelná pro kvalitní práci s databázemi MySQL. Proto se tento článek bude zabývat touto klauzulí a podrobně prozkoumá její charakteristické rysy.

Když se zabýváme MySQL, potřebujeme v naprosté většině případů podmíněné klauzule pro příkazy SELECT. Takové klauzule určují výběrová kritéria, takže dostáváme pouze data, která potřebujeme.

MySQL WHERE klauzule je nejúčinnějším prostředkem k filtrování výsledků. Je flexibilní, umožňuje uživatelům specifikovat různé podmínky pro výběr dat a kombinovat několik podmínek v jednom výpisu. Aby byla vaše každodenní pracovní rutina ještě příjemnější, je vždy lepší uchýlit se k profilování MySQL a optimalizaci dotazů.

Obsah

  • Syntaxe MySQL WHERE
  • Použití WHERE v MySQL
  • Příklad jedné podmínky dotazu WHERE
  • Více podmínek WHERE
  • KDE A operátor
  • KDE NEBO operátor
  • Použití AND s podmínkami NEBO
  • operátor KDE MEZI
  • operátor WHERE LIKE
  • KDE NENÍ TAKOVÝ příklad
  • Operátor WHERE IN
  • KDE NENÍ V příkladu
  • Operátor WHERE IS NULL
  • příklad WHERE IS NOT NULL
  • KDE NEEXISTUJE
  • KDE EXISTUJE
  • Použití klauzule WHERE MySQL s operátory porovnání
  • Souhrn

Syntaxe MySQL WHERE

Nejprve se podívejme blíže na použití WHERE v SELECT prohlášení. Základní syntaxe je následující:

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

SELECT … FROM je standardní příkaz definující, na které sloupce a na kterou tabulku cílíme. WHERE klíčové slovo identifikuje kritéria výběru dat. Může existovat jedna hodnota, rozsah mezi hodnotami, dílčí dotaz a více než jedna podmínka.

Automatizujte svou práci pomocí kritérií dotazů. Prohlédněte si je a vizuálně je upravte na samostatných kartách našeho vizuálu Dotazovací nástroj MySQL kam kreslíte svůj dotaz. Nemusíte zadávat názvy sloupců ani si pamatovat složitá pravidla. Stačí vybrat požadovaná data ze seznamů a užít si výsledky.

Použití WHERE v MySQL

MySQL funguje při provádění SELECT následujícím způsobem příkaz obsahující WHERE klauzule:

  1. Vyhodnoťte FROM klauzule k identifikaci cílové tabulky.
  2. Pokračujte na WHERE klauzule k vyhodnocení kritérií pro výběr dat.
  3. Zaškrtněte SELECT příkaz k definování sloupců, které se mají načíst.

Poznámka :SELECT příkaz často obsahuje ORDER BY klauzule, která řadí výsledky vzestupně nebo sestupně. Pokud ano, MySQL to nakonec vyhodnotí.

Princip práce MySQL WHERE je podobný IF stav v programovacích jazycích. Porovnává hodnoty, které poskytujeme, s hodnotami cílové tabulky MySQL. Když se tyto hodnoty shodují, RDBMS tyto záznamy načte uživatelům.

Když je splněna podmínka pro WHERE klauzule je textová hodnota, vkládáme tento text do jednoduchých uvozovek. Pro číselné hodnoty však nejsou nutné žádné uvozovky.

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

SELECT * 
FROM Readers
WHERE CustomerID = 24;

Vylepšete své skriptovací schopnosti pomocí pokročilého formátovače MySQL, který umožňuje zkrášlit váš kód tak, aby byl přesně takový, jak se vám líbí.

Nyní se podívejme na použití WHERE doložka. Zahrnuje řadu konkrétních případů. Nejlepší způsob, jak je prozkoumat, je odkázat na praktický MySQL WHERE příklad pro každý scénář.

Příklad dotazu WHERE s jednou podmínkou

Nejjednodušší scénář použití této klauzule je MySQL WHERE mít jedno jediné kritérium pro výběr dat. Předpokládejme, že nějaká společnost chce získat seznam svých zaměstnanců pracujících v oddělení péče o zákazníky jako manažeři podpory:

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

Dotaz načte data od zaměstnanců tabulky a filtrujte záznamy podle hodnoty v job_title sloupec. Měl by vrátit seznam všech příjmení a jmen všech zaměstnanců, kteří pracují jako manažeři podpory. Výstup je níže:

last_name křestní_jméno job_title
Liška Marie Podpora
Černá Jan Podpora
Johnson Steve Podpora
Hudson Diana Podpora
Williams Katie Podpora
Zelená Jake Podpora

Poznámka :Сode méně a dosáhněte více s MySQL syntax checker. dbForge Studio pro MySQL je IDE s bohatými funkcemi, které je navrženo pro usnadnění vývoje, údržby a správy databází MySQL a MariaDB.

Více podmínek WHERE

Výše uvedený příklad dokazuje, že MySQL WHERE klauzule přináší data, která odpovídají podmínce. V tomto případě odfiltroval všechny zaměstnance se zadanou pracovní pozicí. K získání dat však často potřebujeme nastavit několik kritérií. Je to možné – musíme použít MySQL WHERE s konkrétními operátory – AND operátor a OR operátor.

operátor KDE A

Udělejme náš předchozí příklad trochu složitější. Chceme seznam zaměstnanců pracujících v oddělení podpory, přijatých v loňském roce.

Abychom toho dosáhli, nastavíme dvě podmínky a sjednotíme je pomocí AND logický operátor:

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

Výstup:

last_name křestní_jméno job_title nájemný_rok
Liška Marie Podpora 2021
Černá Jan Podpora 2021
Johnson Steve Podpora 2021

Samotné psaní kódu zabírá lví podíl na celkovém čase, který strávíte vývojem a správou databáze. Zdvojnásobte rychlost kódování pomocí vylepšeného a optimalizovaného editoru kódu serveru MySQL, který je součástí dbForge Studio for MySQL.

operátor WHERE NEBO

Pomocí OR logický operátor je další metoda práce s několika podmínkami v MySQL WHERE doložka. Pokud odešleme tento dotaz, vrátí data odpovídající kritériím, která jsme nastavili.

Firma chce prověřit stálé zákazníky ze dvou měst. Za tímto účelem uvedeme tato města a použijeme OR operátor.

SELECT 
    lastName, 
    firstName, 
    city 
FROM
    customers
WHERE
    city = 'Seattle' OR 
    city = 'Bellevue';
last_name křestní_jméno město
Anderson Marie Seattle
Černá Jan Seattle
Thompson Steve Bellevue
Smith Diana Bellevue
Williams Katie Seattle
Peters Jake Seattle

Použití AND s podmínkami OR

MySQL umožňuje kombinovat WHERE AND OR MySQL – oba logické operátory mohou být přítomny v jednom příkazu. V tomto případě MySQL zkontroluje tři podmínky najednou.

Knihovna chce například získat informace o svých čtenářích sídlících v Bellevue, kteří se v roce 2021 stali pravidelnými čtenáři knihovny nebo přečetli více než 20 knih.

V tomto případě MySQL WHERE řetězec se stává složitějším. Pro přizpůsobení a uspořádání AND &OR podmínky, používáme závorky k určení, jak je musí MySQL vyhodnotit.

Podívejte se na příklad níže:

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

Výstup:

last_name křestní_jméno město reg_year přečtení_knih
Anderson Marie 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 Jan Bellevue 2020 11

Tento výstup ukazuje některé výsledky odpovídající podmínce města bydliště + roku registrace. Zahrnuje také výsledky odpovídající druhé podmínce, tedy přečtení více než 20 knih.

operátor WHERE BETWEEN

Operátor BETWEEN umožňuje nastavení širších limitů. Předpokládejme, že knihovna chce získat seznam svých čtenářů, kteří se připojili v letech 2019, 2020 a 2021. Místo odeslání několika dotazů nebo použití AND operátor, můžeme nastavit rozsah pro WHERE pomocí BETWEEN operátor.

Abychom získali seznam čtenářů, kteří se připojili v letech 2019 až 2022, odešleme následující dotaz:

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

Výstup:

last_name křestní_jméno reg_year
Anderson Marie 2019
Jones Chris 2019
Thompson Lora 2019
Farrell Brian 2019
Smith Jeff 2020
Peters Anna 2020
Patterson Jan 2020
Williams Označit 2021
Výlety Andrew 2021
Grant Valentýna 2021

operátor WHERE LIKE

Použití operátoru LIKE vám umožní použít klauzuli WHERE k výběru určitých záznamů, které obsahují konkrétní vzor. K definování tohoto vzoru používáme znak procenta (%) k nahrazení znaku nebo řetězce několika znaků libovolné délky.

Nejběžnější vzory pro MySQL SELECT WHERE LIKE jsou následující:

WHERE hodnota LIKE 'abc% ‘ – vyhledá a vrátí všechny hodnoty začínající „abc“

WHERE hodnota LIKE '%abc' – vyhledá a vrátí všechny hodnoty končící na „abc“

WHERE hodnota LIKE '%abc%' – vyhledá a vrátí hodnoty, které mají „abc“ kdekoli mezi začátkem a koncem

Pojďme se podívat na WHERE LIKE příklad. Společnost chce získat seznam svých zákazníků z USA a Velké Británie. Dotaz je následující:

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

Výstup je:

Název kontaktu Země Město
Helen Bennett Velká Británie Cowes
Simon Crowther Velká Británie Londýn
Hari Kumar Velká Británie Londýn
Howard Snyder USA Eugene
Yoshi Latimer USA Elgin
John Steel USA Walla Walla
Jaime Torres USA San Francisco
Fran Wilson USA Portland

příklad WHERE NOT LIKE

Existuje další případ, kdy potřebujete některá data z výsledků vyloučit. Můžeme použít MySQL WHERE NOT LIKE operátor. Vyhledá a vrátí data, která nemají specifické znaky.

Společnost chce seznam svých zákazníků ze všech zemí kromě Spojeného království a USA. Syntaxe WHERE NOT LIKE v MySQL bude vypadat následovně:

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

Výstup:

Název kontaktu Země Město
Roland Mendel Rakousko Graz
Georg Pipps Rakousko Salcburk
Catherine Dewey Belgie Bruxelles
Pascale Cartrain Belgie Charleroi
Elizabeth Lincoln Kanada Tsawassen
Yoshi Tannamuri Kanada Vancouver
Jean Fresnière Kanada Montréal
Jytte Petersen Dánsko København
Palle Ibsen Dánsko Århus
Pirkko Koskitalo Finsko Oulu
Matti Karttunen Finsko Helsinki
Annette Roulet Francie Toulouse
Marie Bertrand Francie Paříž
Maria Anders Německo Berlín
Hanna Mooss Německo Mannheim

Operátor WHERE IN

Pomocí IN a NOT IN klíčová slova jsou další možností, jak filtrovat řádky a načíst pouze část dat, která odpovídá našim přísným kritériím. Primárním účelem je snížit počet OR klauzule v jedné SELECT prohlášení.

MySQL WHERE IN apeluje na řádky obsahující hodnoty, které jsme zadali pro WHERE stav. Chceme například získat seznam zákazníků, kteří sídlí v několika evropských zemích. WHERE IN syntaxe je v MySQL následující:

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

Vezměte prosím na vědomí, že naše hodnoty, které určují podmínku vyhledávání, uzavíráme v závorkách. V případě práce s textovými hodnotami je musíme všechny dát do jednoduchých uvozovek. Pokud jsou však naše hodnoty a číselné hodnoty, uvedeme je bez jednoduchých uvozovek, např. (25, 35, 45).

Výstup výše uvedeného MySQL WHERE IN klauzule v SELECT prohlášení je:

Název kontaktu Země Město
Catherine Dewey Belgie Bruxelles
Pascale Cartrain Belgie Charleroi
Frédérique Citeaux Francie Štrasburk
Laurence Lebihans Francie Marseille
Janine Labrune Francie Nantes
Martine Rancé Francie Lille
Alexander Feuer Německo Lipsko
Henriette Pfalzheim Německo Köln
Horst Kloss Německo Cunewalde
Karin Josephs Německo Münster
Rita Müller Německo Stuttgart
Thomas Hardy Velká Británie Londýn
Victoria Ashworth Velká Británie Londýn
Elizabeth Brown Velká Británie Manchester
Ann Devon Velká Británie Londýn

příklad WHERE NOT IN

Opačný případ je MySQL WHERE NOT IN doložka. Používá se k zajištění toho, že váš dotaz bude ignorovat ty řádky obsahující hodnoty zadané pro podmínku. Ve výše uvedeném příkladu jsme požadovali zákazníky ze 4 určitých evropských zemí. MySQL WHERE NOT IN SELECT dotaz na stejný požadavek vrátí všechny zákazníky s bydlištěm v jiných zemích kromě těch 4 definovaných dříve.

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

Výstup:

Název kontaktu Země Město
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 Itálie Řím
Giovanni Rovelli Itálie Turín
Anna Moroni Itálie Pavia

Poznámka :Doporučujeme použít [NOT] EXISTS přes [NOT] IN protože EXISTS logický operátor pracuje rychleji než IN , při porovnávání datových sad pomocí poddotazu. Navíc NOT EXISTS zabrání neočekávaným výsledkům, když zdrojová data obsahují NULL hodnoty.

operátor WHERE IS NULL

Chcete-li zkontrolovat, zda je hodnota NULL nebo ne, použijte IS NULL operátor. Následující příkaz používá WHERE klauzule s IS NULL operátor pro získání řádků bez hodnoty v books_read sloupec:

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

Výstup bude vypadat takto:

last_name křestní_jméno reg_year přečtení_knih
Janett Overacker 2020 NULL
Lidia Swenson 2017 NULL
Albert Cepeau 2018 NULL
Anastasia Johnson 2021 NULL
Will Smith 2017 NULL

příklad WHERE IS NOT NULL

Na rozdíl od předchozího příkazu WHERE IS NOT NULL , naopak zobrazuje pouze ty řádky, které obsahují nějakou hodnotu v příslušném sloupci. V následujícím příkladu vybereme pouze ty řádky, kde je books_read sloupec není prázdný:

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

Ve výstupu uvidíte pouze ty řádky, které obsahují hodnotu v books_read sloupec:

last_name křestní_jméno reg_year přečtení_knih
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. Entita Oracle v rámci entity VS neaktualizuje primární klíč v kódu

  2. Jak předat parametry hodnot tabulky do uložené procedury z kódu .net

  3. Zobrazení obsahu databázového souboru v Android Studio

  4. postgresql seznam a pořadí tabulek podle velikosti