MySQL WHERE Klauzula: AND, OR, IN, NOT IN Przykład zapytania
Co oznacza klauzula WHERE MySQL?
Klauzula WHERE in MySQL jest słowem kluczowym używanym do określenia dokładnych kryteriów danych lub wierszy, które będą podlegać określonemu poleceniu SQL. Klauzula WHERE może być używana z poleceniami SQL, takimi jak INSERT, UPDATE, SELECT i DELETE, aby filtrować rekordy i wykonywać różne operacje na danych.
Przyjrzeliśmy się, jak wysyłać zapytania do danych z pliku a baza danych używając instrukcji SELECT z poprzedniego samouczka. Instrukcja SELECT zwróciła wszystkie wyniki z zapytanej tabeli bazy danych.
Są jednak sytuacje, w których chcemy ograniczyć wyniki zapytania do określonego warunku. Klauzula WHERE w SQL przydaje się w takich sytuacjach.

Klauzula WHERE Składnia
Podstawowa składnia klauzuli WHERE używanej w a MySQL Instrukcja SELECT WHERE wygląda następująco.
SELECT * FROM tableName WHERE condition;
TUTAJ
- „WYBIERZ * Z nazwy tabeli” jest standardem SELECT oświadczenie
- "GDZIE" to słowo kluczowe, które ogranicza nasz zestaw wyników zapytania wybierającego i "stan : schorzenie" to filtr, który ma zostać zastosowany do wyników. Filtrem może być zakres, pojedyncza wartość lub zapytanie podrzędne.
Przyjrzyjmy się teraz a praktyczny przykład.
Załóżmy, że chcemy uzyskać dane osobowe członka z tabeli „członkowie” o podanym numerze członkostwa 1. W tym celu użylibyśmy następującego skryptu.
SELECT * FROM `members` WHERE `membership_number` = 1;
Wykonanie powyższego skryptu w MySQL Workbench w bazie danych „myflixdb” wygeneruje następujące wyniki.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
Klauzula WHERE połączona z – ROLNICZE LOGICZNY OperaTor
Warunek WHERE w MySQL w połączeniu z operatorem logicznym AND jest wykonywany tylko wtedy, gdy spełnione są WSZYSTKIE określone kryteria filtrowania.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
Klauzula WHERE połączona z – OR LOGICZNY OperaTor
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
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 |
Klauzula WHERE połączona z – IN słowo kluczowe
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Wykonanie powyższego skryptu w MySQL workbench w zestawieniu z „myflixdb” daje następujące wyniki.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
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 |
Klauzula WHERE połączona z – NIE W słowo kluczowe
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Wykonanie powyższego skryptu w MySQL workbench w zestawieniu z „myflixdb” daje następujące wyniki.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Klauzula WHERE połączona z – PORÓWNANIE Operatorsy
= Równy
SELECT * FROM `members` WHERE `gender` = 'Female';
Wykonanie powyższego skryptu w MySQL workbench w zestawieniu z „myflixdb” daje następujące wyniki.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
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 |
> Lepszy niż
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 |
< > Nierówne
SELECT * FROM `movies` WHERE `category_id`<> 1;
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 |
Podsumowanie
- Klauzula SQL WHERE służy do ograniczenia liczby wierszy, na które wpływają polecenia SELECT, UPDATE lub USUŃ zapytanie.
- Warunek WHERE w SQL może być używany w powiązaniu z operatorami logicznymi takimi jak AND i OR, operatorami porównania takimi jak ,= itp.
- W przypadku użycia z AND operator logiczny, wszystkie kryteria muszą zostać spełnione.
- W przypadku użycia operatora logicznego OR, każde z kryteriów musi być spełnione.
- Słowo kluczowe IN służy do wybierania wierszy pasujących do listy wartości.
Łamigłówka
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Wykonanie powyższego skryptu w MySQL workbench daje następujące wyniki.
reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
---|---|---|---|---|---|
14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |