Klauzula MySQL WHERE: I, ILI, U, NE U PRIMJERU upita

Sadržaj:

Anonim

Što je WHERE klauzula u MySQL-u?

Klauzula WHERE u MySQL-u ključna je riječ koja se koristi za određivanje točnih kriterija podataka ili redaka na koje će navedeni SQL izraz utjecati. Klauzula WHERE može se koristiti s SQL izrazima poput INSERT, UPDATE, SELECT i DELETE za filtriranje zapisa i izvršavanje različitih operacija na podacima.

Pogledali smo kako tražiti podatke iz baze podataka pomoću naredbe SELECT u prethodnom vodiču. Izraz SELECT vratio je sve rezultate iz upitane tablice baze podataka.

To su, međutim, trenutci kada želimo ograničiti rezultate upita na određeno stanje. Klauzula WHERE u SQL-u dobro dolazi u takvim situacijama.

Klauzula WHERE u MySQL-u

Sintaksa klauzula WHERE

Osnovna sintaksa klauzule WHERE kada se koristi u MySQL SELECT WHERE izjavi je kako slijedi.

SELECT * FROM tableName WHERE condition;

OVDJE

  • "SELECT * FROM tableName" je standardni SELECT izraz
  • "WHERE" je ključna riječ koja ograničava naš odabrani skup rezultata rezultata, a "condition" je filtar koji se primjenjuje na rezultate. Filtar može biti raspon, pojedinačna vrijednost ili podupit.

Pogledajmo sada praktični primjer .

Pretpostavimo da želimo dobiti osobne podatke člana iz tablice članova s ​​obzirom na broj članstva 1, koristili bismo sljedeću skriptu da bismo to postigli.

SELECT * FROM `members` WHERE `membership_number` = 1;

Izvršenje gornje skripte u MySQL radnom stolu na "myflixdb" rezultiralo bi sljedećim rezultatima.

 
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 This email address is being protected from spambots. You need JavaScript enabled to view it.

Klauzula WHERE u kombinaciji s - AND LOGICAL Operator

Uvjet WHERE u MySQL-u kada se koristi zajedno s logičkim operatorom AND, izvršava se samo ako su zadovoljeni SVI navedeni kriteriji filtra. Pogledajmo sada praktični primjer - Pretpostavimo da želimo dobiti popis svih filmova kategorije 2 koji su objavljeni 2008. godine, a koristili bismo dolje prikazanu skriptu.

SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;

Izvršavanje gornje skripte u MySQL radnom stolu protiv "myflixdb" daje sljedeće rezultate.

 
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

Klauzula WHERE u kombinaciji s - OR LOGICAL Operator

Klauzula WHERE kada se koristi zajedno s operatorom OR izvršava se samo ako je zadovoljen bilo koji ili cijeli navedeni kriterij filtra. Sljedeća skripta uključuje sve filmove u kategoriji 1 ili kategoriji 2
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;

Izvršavanje gornje skripte u MySQL radnom stolu protiv "myflixdb" daje sljedeće rezultate.

 
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 u kombinaciji s ključnom riječi - IN

Klauzula WHERE u MySQL, kada se koristi zajedno s ključnom riječi IN, utječe samo na retke čije vrijednosti odgovaraju popisu vrijednosti navedenom u ključnoj riječi IN. Izjava MySQL IN pomaže smanjiti broj klauzula ILI koje ćete možda morati koristiti. Sljedeći MySQL upit WHERE IN daje retke u kojima je broj članstva 1, 2 ili 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Izvršavanje gornje skripte u MySQL radnom stolu protiv "myflixdb" daje sljedeće rezultate.

 
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 This email address is being protected from spambots. You need JavaScript enabled to view it.
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL This email address is being protected from spambots. You need JavaScript enabled to view it.
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 This email address is being protected from spambots. You need JavaScript enabled to view it.

Klauzula WHERE u kombinaciji s - NOT IN Keyword

Klauzula WHERE kada se koristi zajedno s ključnom riječi NOT IN NE SMIJENI utjecati na retke čije vrijednosti odgovaraju popisu vrijednosti navedenom u ključnoj riječi NOT IN. Sljedeći upit daje retke u kojima broj_člana NIJE 1, 2 ili 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Izvršavanje gornje skripte u MySQL radnom stolu protiv "myflixdb" daje sljedeće rezultate.

 
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 u kombinaciji s - COMPARISON Operatori

Operatori usporedbe manje od (), jednako (=), a ne jednako () mogu se koristiti s klauzulom WHERE

= Jednako

Sljedeća skripta dobiva sve ženske članove iz tablice članova koristeći operator jednake usporedbe.
SELECT * FROM `members` WHERE `gender` = 'Female';

Izvršavanje gornje skripte u MySQL radnom stolu protiv "myflixdb" daje sljedeće rezultate.

 
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 This email address is being protected from spambots. You need JavaScript enabled to view it.
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL This email address is being protected from spambots. You need JavaScript enabled to view it.
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

> Veći od

Sljedeća skripta dobiva sve isplate veće od 2000 iz tablice plaćanja. ODABERITE * IZ `plaćanja` GDJE` uplaćeni iznos`> 2000; Izvršavanje gornje skripte u MySQL radnom stolu protiv "myflixdb" daje sljedeće rezultate.
 
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

<> Nije jednako

Sljedeća skripta dobiva sve filmove čiji ID kategorije nije 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Izvršavanje gornje skripte u MySQL radnom stolu protiv "myflixdb" daje sljedeće rezultate.
 
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

Sažetak

  • Klauzula SQL WHERE koristi se za ograničavanje broja redaka na koje utječe upit SELECT, UPDATE ili DELETE.
  • Uvjet WHERE u SQL-u može se koristiti zajedno s logičkim operatorima poput AND i OR, operatorima usporedbe poput, = itd.
  • Kada se koristi s logičkim operatorom AND, svi kriteriji moraju biti zadovoljeni.
  • Kada se koristi s logičkim operatorom OR, mora biti zadovoljen bilo koji od kriterija.
  • Ključna riječ IN koristi se za odabir redaka koji odgovaraju popisu vrijednosti.

Mozgalica Pretpostavimo da želimo dobiti popis unajmljenih filmova koji nisu vraćeni na vrijeme 25.6.2012. Da bismo to postigli, možemo koristiti klauzulu SQL WHERE izjave zajedno s operatorom manje od usporedbe i logičkim operatorom AND.

SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Izvršavanje gornje skripte u MySQL workbenchu ​​daje sljedeće rezultate.
 
reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0