Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Warunek WHERE w MySQL z 16 różnymi przykładami zapytań

W tym artykule omówimy WHERE klauzula i jak jej używać w MySQL. Poza SELECT , zakres WHERE klauzula zawiera UPDATE i DELETE sprawozdania. WHERE klauzula jest niezbędna do jakościowej pracy z bazami danych MySQL. Dlatego w bieżącym artykule omówimy tę klauzulę i dogłębnie omówimy jej wyróżniające cechy.

Kiedy mamy do czynienia z MySQL, w bezwzględnej większości przypadków potrzebujemy klauzul warunkowych dla instrukcji SELECT. Takie klauzule określają kryteria wyboru, więc otrzymujemy tylko te dane, których potrzebujemy.

MySQL WHERE klauzula jest najłatwiejszym sposobem filtrowania wyników. Jest elastyczny, pozwala użytkownikom określić różne warunki selekcji danych i połączyć kilka warunków w jednym zestawieniu. Aby uczynić codzienną rutynę pracy jeszcze przyjemniejszą, zawsze lepiej jest uciekać się do profilowania MySQL i optymalizacji zapytań.

Zawartość

  • Składnia MySQL WHERE
  • Używanie WHERE w MySQL
  • GDZIE przykład zapytania z pojedynczym warunkiem
  • Wiele warunków WHERE
  • GDZIE I operator
  • GDZIE OR operator
  • Używanie AND z warunkami OR
  • GDZIE MIĘDZY operatorem
  • Operator GDZIE PODOBNE
  • GDZIE NIE PODOBA, przykład
  • GDZIE W operatorze
  • GDZIE NIE W przykładzie
  • GDZIE JEST NULL operator
  • GDZIE NIE JEST NULL, przykład
  • GDZIE NIE ISTNIEJE
  • GDZIE ISTNIEJE
  • Używanie klauzuli WHERE MySQL z operatorami porównania
  • Podsumowanie

Składnia MySQL WHERE

Na początek przyjrzyjmy się bliżej użyciu WHERE w SELECT oświadczenie. Podstawowa składnia jest następująca:

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

SELECT … FROM to standardowa instrukcja definiująca, na które kolumny i na którą tabelę celujemy. WHERE słowo kluczowe identyfikuje kryteria wyboru danych. Może istnieć pojedyncza wartość, zakres między wartościami, podzapytanie i więcej niż jeden warunek.

Automatyzuj swoją pracę za pomocą kryteriów zapytań. Zobacz i edytuj je wizualnie na osobnych kartach naszej wizualizacji Narzędzie do zapytań MySQL gdzie rysujesz zapytanie. Nie musisz wpisywać nazw kolumn ani zapamiętywać skomplikowanych reguł. Wystarczy wybrać żądane dane z list i cieszyć się wynikami.

Używanie WHERE w MySQL

MySQL działa w następujący sposób podczas wykonywania SELECT instrukcja zawierająca WHERE klauzula:

  1. Oceń FROM klauzula identyfikująca tabelę docelową.
  2. Przejdź do WHERE klauzula oceny kryteriów wyboru danych.
  3. Sprawdź SELECT instrukcja do zdefiniowania kolumn do pobrania.

Uwaga :SELECT instrukcja często zawiera ORDER BY klauzula, która umieszcza wyniki w porządku rosnącym lub malejącym. Jeśli tak, MySQL oceni to na końcu.

Zasada działania MySQL WHERE jest podobny do IF stan w językach programowania. Porównuje podane przez nas wartości z wartościami w docelowej tabeli MySQL. Gdy te wartości są zgodne, RDBMS pobiera te rekordy do użytkowników.

Gdy warunek WHERE klauzula jest wartością tekstową, którą umieszczamy w apostrofach. Jednak w przypadku wartości liczbowych nie są wymagane żadne cudzysłowy.

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

SELECT * 
FROM Readers
WHERE CustomerID = 24;

Zwiększ swoje umiejętności skryptowania dzięki zaawansowanemu formaterowi MySQL, który pozwala upiększyć kod, aby uzyskać go dokładnie tak, jak lubisz.

Teraz przejrzyjmy użycie WHERE klauzula. Obejmuje wiele konkretnych przypadków. Najlepszym sposobem na ich zbadanie jest odwołanie się do praktycznego MySQLa WHERE przykład dla każdego scenariusza.

GDZIE zapytanie z pojedynczym warunkiem, przykład

Najprostszym scenariuszem użycia tej klauzuli jest MySQL WHERE posiadanie jednego kryterium doboru danych. Załóżmy, że jakaś firma chce pobrać listę swoich pracowników pracujących w dziale obsługi klienta jako menedżerowie wsparcia:

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

Kwerenda pobierze dane od pracowników tabeli i filtruj rekordy zgodnie z wartością w job_title kolumna. Powinien zwracać listę wszystkich nazwisk i imion wszystkich pracowników, którzy pracują jako menedżerowie wsparcia. Dane wyjściowe znajdują się poniżej:

nazwisko imię job_title
Lis Mary Wsparcie
Czarny Jan Wsparcie
Johnson Steve Wsparcie
Hudson Diana Wsparcie
Williams Katie Wsparcie
Zielony Jake Wsparcie

Uwaga :Koduj mniej i osiągaj więcej dzięki sprawdzaniu składni MySQL. dbForge Studio dla MySQL to bogate w funkcje IDE zaprojektowane w celu ułatwienia rozwoju, utrzymania i administrowania bazami danych MySQL i MariaDB.

Wiele warunków WHERE

Powyższy przykład dowodzi, że MySQL WHERE Klauzula dostarcza dane pasujące do warunku. W tym przypadku odfiltrowano wszystkich pracowników o określonym stanowisku. Jednak często musimy ustawić kilka kryteriów, aby pobrać dane. Jest to wykonalne – musimy zastosować MySQL WHERE z określonymi operatorami – AND operator i OR operator.

GDZIE I operator

Zróbmy nasz poprzedni przykład nieco bardziej skomplikowany. Chcemy listę pracowników zatrudnionych w Dziale Wsparcia, zatrudnionych w zeszłym roku.

Aby to osiągnąć, ustawimy dwa warunki i połączymy je za pomocą AND operator logiczny:

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

Wynik:

nazwisko imię job_title rok zatrudnienia
Lis Mary Wsparcie 2021
Czarny Jan Wsparcie 2021
Johnson Steve Wsparcie 2021

Samo pisanie kodu zajmuje lwią część całkowitego czasu, jaki poświęcasz na tworzenie i administrowanie bazami danych. Podwój szybkość kodowania dzięki udoskonalonemu i zoptymalizowanemu edytorowi kodu MySQL Server, który jest dostarczany z dbForge Studio dla MySQL.

GDZIE OR operator

Korzystanie z OR operator logiczny to kolejna metoda pracy z kilkoma warunkami w MySQL WHERE klauzula. Jeśli prześlemy to zapytanie, zwróci ono dane pasujące do ustalonych przez nas kryteriów.

Firma chce sprawdzić stałych klientów pochodzących z dwóch miast. W tym celu określimy te miasta i użyjemy OR operatora.

SELECT 
    lastName, 
    firstName, 
    city 
FROM
    customers
WHERE
    city = 'Seattle' OR 
    city = 'Bellevue';
nazwisko imię miasto
Anderson Mary Seattle
Czarny Jan Seattle
Thompson Steve Belevue
Kowalski Diana Belevue
Williams Katie Seattle
Piotrowie Jake Seattle

Używanie AND z warunkami OR

MySQL pozwala na połączenie MySQL WHERE AND OR – oba operatory logiczne mogą występować w jednej instrukcji. W takim przypadku MySQL sprawdzi jednocześnie trzy warunki.

Na przykład biblioteka chce uzyskać informacje o swoich czytelnikach mieszkających w Bellevue, którzy stali się stałymi czytelnikami biblioteki w 2021 r. lub przeczytali ponad 20 książek.

W tym przypadku MySQL WHERE ciąg staje się bardziej złożony. Aby dopasować i zorganizować AND &OR warunków, używamy nawiasów, aby określić, w jaki sposób MySQL musi je ocenić.

Spójrz na poniższy przykład:

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

Wynik:

nazwisko imię miasto reg_year books_read
Anderson Mary Seattle 2021 25
Jones Chris Belevue 2020 12
Thompson Lora Seattle 2020 35
Farrel Brian Belevue 2021 48
Kowalski Jeff Belevue 2020 50
Piotrowie Anna Belevue 2020 10
Patterson Jan Belevue 2020 11

Ten wynik pokazuje niektóre wyniki pasujące do stanu miasta zamieszkania + rok rejestracji. Zawiera również wyniki spełniające drugi warunek, czyli przeczytanie ponad 20 książek.

GDZIE POMIĘDZY operatorem

Operator BETWEEN pozwala na ustawienie szerszych limitów. Załóżmy, że biblioteka chce uzyskać listę swoich czytelników, którzy dołączyli w 2019, 2020 i 2021. Zamiast wysyłać kilka zapytań lub używać AND operatora, możemy ustawić zakres dla WHERE warunek za pomocą BETWEEN operator.

Aby pobrać listę czytelników dołączających w latach 2019-2022, przesyłamy następujące zapytanie:

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

Wynik:

nazwisko imię reg_year
Anderson Mary 2019
Jones Chris 2019
Thompson Lora 2019
Farrel Brian 2019
Kowalski Jeff 2020
Piotrowie Anna 2020
Patterson Jan 2020
Williams Zaznacz 2021
Wycieczki Andrzej 2021
Przyznaj Walentyna 2021

operator WHERE LIKE

Zastosowanie operatora LIKE umożliwia użycie klauzuli WHERE do wybrania określonych rekordów zawierających określony wzorzec. Aby zdefiniować ten wzorzec, używamy znaku procentu (%) w celu zastąpienia znaku lub ciągu kilku znaków o dowolnej długości.

Najpopularniejsze wzorce dla MySQL SELECT WHERE LIKE są następujące:

WHERE wartość LIKE 'abc% ‘ – wyszukuje i zwraca wszystkie wartości zaczynające się od „abc”

WHERE wartość LIKE '%abc' – znajduje i zwraca wszystkie wartości kończące się na „abc”

WHERE wartość LIKE '%abc%' – znajduje i zwraca wartości mające „abc” w dowolnym miejscu między początkiem a końcem

Rzućmy okiem na WHERE LIKE przykład. Firma chce zdobyć listę swoich klientów z USA i Wielkiej Brytanii. Zapytanie jest następujące:

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

Dane wyjściowe to:

Nazwa kontaktu Kraj Miasto
Helen Bennett Wielka Brytania Cowes
Simon Crowther Wielka Brytania Londyn
Hari Kumar Wielka Brytania Londyn
Howard Snyder USA Eugeniusz
Latimer Yoshi USA Elgin
John Steel USA Walla Walla
Jaime Torres USA San Francisco
Fran Wilson USA Portland

GDZIE NIE PODOBA

Jest jeszcze inny przypadek, w którym musisz wykluczyć niektóre dane z wyników. Możemy użyć MySQL WHERE NOT LIKE operator. Znajduje i zwraca dane, które nie mają określonych znaków.

Firma chce mieć listę swoich klientów ze wszystkich krajów z wyjątkiem Wielkiej Brytanii i USA. Składnia WHERE NOT LIKE w MySQL będzie wyglądać jak poniżej:

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

Wynik:

Nazwa kontaktu Kraj Miasto
Roland Mendel Austria Graz
Georg Pipps Austria Salzburg
Catherine Dewey Belgia Bruksela
Pascale Cartrain Belgia Charleroi
Elizabeth Lincoln Kanada Tsawassen
Yoshi Tannamuri Kanada Vancouver
Jean Fresnière Kanada Montréal
Jytte Petersen Dania Kbenhavn
Balle Ibsen Dania Århus
Pirkko Koskitalo Finlandia Oulu
Matti Karttunen Finlandia Helsinki
Annette Roulet Francja Tuluza
Marie Bertrand Francja Paryż
Maria Anders Niemcy Berlin
Hanna Mooss Niemcy Mannheim

operator WHERE IN

Korzystanie z IN i NOT IN słowa kluczowe to kolejna opcja filtrowania wierszy i pobierania tylko części danych, która odpowiada naszym ścisłym kryteriom. Głównym celem jest zmniejszenie liczby OR klauzule w jednym SELECT oświadczenie.

MySQL WHERE IN odwołuje się do wierszy zawierających wartości określone dla WHERE stan :schorzenie. Na przykład chcemy pobrać listę klientów, którzy mieszkają w kilku krajach europejskich. WHERE IN składnia jest następująca w MySQL:

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

Pamiętaj, że umieszczamy nasze wartości określające warunek wyszukiwania w nawiasach. W przypadku pracy z wartościami tekstowymi musimy je wszystkie umieścić w apostrofach. Jeśli jednak nasze wartości i wartości liczbowe, wymienimy je bez pojedynczych cudzysłowów, np. (25, 35, 45).

Wyjście powyższego MySQL WHERE IN klauzula w SELECT oświadczenie to:

Nazwa kontaktu Kraj Miasto
Catherine Dewey Belgia Bruksela
Pascale Cartrain Belgia Charleroi
Frédérique Citeaux Francja Strasburg
Laurence Lebihans Francja Marsylia
Janine Labrune Francja Nantes
Martine Rance Francja Lille
Aleksander Feuer Niemcy Leipzig
Henriette Pfalzheim Niemcy Kolonia
Horst Kloss Niemcy Cunewalde
Karin Josephs Niemcy Münster
Rita Müller Niemcy Stuttgart
Thomas Hardy Wielka Brytania Londyn
Victoria Ashworth Wielka Brytania Londyn
Elizabeth Brown Wielka Brytania Manchester
Ann Devon Wielka Brytania Londyn

GDZIE NIE W przykładzie

Odwrotnym przypadkiem jest MySQL WHERE NOT IN klauzula. Służy do upewnienia się, że zapytanie zignoruje wiersze zawierające wartości określone dla warunku. W powyższym przykładzie poprosiliśmy klientów z 4 określonych krajów europejskich. MySQL WHERE NOT IN SELECT zapytanie o to samo żądanie zwróci wszystkich klientów zamieszkałych w innych krajach, z wyjątkiem tych 4 zdefiniowanych wcześniej.

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

Wynik:

Nazwa kontaktu Kraj Miasto
Patricio Simpson Argentyna Buenos Aires
Sergio Gutiérrez Argentyna Buenos Aires
Brian Citeaux Kanada Montréal
Laura Smith Kanada Toronto
Jan Green Kanada Toronto
Martine Rance Kanada Vancouver
Aleksander Feuer Kanada Århus
Paolo Accorti Włochy Rzym
Giovanni Rovelli Włochy Turyn
Anna Moroni Włochy Pawia

Uwaga :Zalecamy użycie [NOT] EXISTS ponad [NOT] IN ponieważ EXISTS operator logiczny działa szybciej niż IN , podczas porównywania zbiorów danych przy użyciu podzapytania. Co więcej, NOT EXISTS uniknie nieoczekiwanych wyników, gdy dane źródłowe zawierają NULL wartości.

GDZIE JEST NULL operator

Aby sprawdzić, czy wartość jest NULL czy nie, użyj IS NULL operator. Poniższa instrukcja używa WHERE klauzula z IS NULL operator, aby uzyskać wiersze bez wartości w books_read kolumna:

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

Wynik będzie wyglądał tak:

nazwisko imię reg_year books_read
Janett Overacker 2020 NULL
Lidia Swenson 2017 NULL
Albert Crepeau 2018 NULL
Anastazja Johnson 2021 NULL
Czy Kowalski 2017 NULL

GDZIE NIE JEST NULL, przykład

W przeciwieństwie do poprzedniego polecenia, WHERE IS NOT NULL , przeciwnie, pokazuje tylko te wiersze, które zawierają jakąś wartość w danej kolumnie. W poniższym przykładzie wybierzemy tylko te wiersze, w których books_read kolumna nie jest pusta:

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

W danych wyjściowych zobaczysz tylko te wiersze, które zawierają wartość w books_read kolumna:

nazwisko imię 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

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

Podsumowanie

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Łączenie się z bazami danych MySQL

  2. Używanie instrukcji IF w zapytaniu MySQL SELECT

  3. Jak działa funkcja OCTET_LENGTH() w MySQL

  4. Zdalne połączenia Mysql Ubuntu

  5. Ograniczniki w MySQL