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.

WHERE klauzula w MySQL
WHERE klauzula w MySQL

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 email
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.

Spójrzmy teraz na praktyczny przykład. Załóżmy, że chcemy uzyskać listę wszystkich filmów z kategorii 2, które ukazały się w 2008 roku. W tym celu użylibyśmy poniższego skryptu.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Wykonanie powyższego skryptu w MySQL workbench w zestawieniu z „myflixdb” daje następujące wyniki.
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

Klauzula WHERE połączona z – OR LOGICZNY OperaTor

Klauzula WHERE używana łącznie z operatorem OR jest wykonywana tylko wtedy, gdy spełnione są wszystkie lub niektóre określone kryteria filtrowania.
Poniższy skrypt pobiera wszystkie filmy z kategorii 1 lub 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Wykonanie powyższego skryptu w MySQL workbench w zestawieniu z „myflixdb” daje następujące wyniki.
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

GDZIE w MySQL klauzula użyta razem ze słowem kluczowym IN wpływa tylko na wiersze, których wartości odpowiadają liście wartości podanej w słowie kluczowym IN. The MySQL Instrukcja IN pomaga zmniejszyć liczbę klauzul OR, których będziesz musiał użyć.
Poniższy MySQL Zapytanie WHERE IN zwraca wiersze, w których numer_członkostwa wynosi 1, 2 lub 3
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 email
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

Klauzula WHERE użyta razem ze słowem kluczowym NOT IN NIE wpływa na wiersze, których wartości odpowiadają liście wartości podanej w słowie kluczowym NOT IN.
Poniższe zapytanie zwraca wiersze, w których membership_number NIE jest równy 1, 2 ani 3
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 email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

Klauzula WHERE połączona z – PORÓWNANIE Operatorsy

Operatory porównania mniejszy niż (), równy (=), różny od () można stosować z klauzulą ​​WHERE

= Równy

Poniższy skrypt pobiera wszystkie członkinie tabeli members za pomocą operatora porównania równość.
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 email
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ż

Poniższy skrypt pobiera wszystkie płatności większe niż 2,000 z tabeli płatności.
WYBIERZ * Z `płatności` GDZIE `kwota_zapłacona` > 2000;
Wykonanie powyższego skryptu w MySQL workbench w zestawieniu z „myflixdb” daje następujące wyniki.
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

Poniższy skrypt pobiera wszystkie filmy, których identyfikator kategorii jest różny od 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Wykonanie powyższego skryptu w MySQL workbench w zestawieniu z „myflixdb” daje następujące wyniki.
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

Załóżmy, że chcemy uzyskać listę wypożyczonych filmów, które nie zostały zwrócone na czas 25/06/2012. Aby to uzyskać, możemy użyć klauzuli SQL WHERE w połączeniu z operatorem porównania „mniejszy niż” oraz operatorem logicznym AND.
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