Š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.
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 | |
---|---|---|---|---|---|---|---|
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 2SELECT * 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 3SELECT * 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 | |
---|---|---|---|---|---|---|---|
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 3SELECT * 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 | |
---|---|---|---|---|---|---|---|
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 | |
---|---|---|---|---|---|---|---|
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 |