MySQL WHERE klauzula: AND, OR, IN, NOT IN Primjer upita
โก Pametni saลพetak
MySQL Klauzula WHERE filtrira retke prije nego ลกto dosegnu skup rezultata, primjenjujuฤi precizne kriterije na naredbe SELECT, UPDATE i DELETE. Razumijevanje operatora AND, OR, IN, NOT IN i operatora usporedbe omoguฤuje poฤetnicima da dohvate toฤno one zapise koje upit zahtijeva.

ล to je WHERE klauzula u MySQL?
WHERE in MySQL je kljuฤna rijeฤ koja se koristi za odreฤivanje toฤnih kriterija podataka ili redaka na koje ฤe utjecati navedena SQL izjava. Klauzula WHERE moลพe se koristiti sa SQL naredbama kao ลกto su INSERT, UPDATE, SELECT i DELETE za filtriranje zapisa i izvoฤenje raznih operacija na podacima.
Pogledali smo kako postaviti upit za podatke iz a baza podataka pomoฤu naredbe SELECT u prethodnom vodiฤu. Izjava SELECT vratila je sve rezultate iz upitane tablice baze podataka.
Meฤutim, postoje sluฤajevi kada ลพelimo ograniฤiti rezultate upita na odreฤeni uvjet. Klauzula WHERE u SQL-u je korisna u takvim situacijama i funkcionira na isti naฤin u Upit za brisanje ili aลพuriranje kao ลกto se to radi u SELECT upitu.
WHERE klauzula Sintaksa
Osnovna sintaksa WHERE klauzule je sljedeฤa.
SELECT * FROM tableName WHERE condition;
OVDJE
- โSELECT * FROM tableNameโ je standard SELECT izraz
- "GDJE" je kljuฤna rijeฤ koja ograniฤava skup rezultata i "stanje" je filtar primijenjen na rezultate. Filtar moลพe biti raspon, pojedinaฤna vrijednost ili podupit.
Pretpostavimo da ลพelimo podatke o ฤlanu iz tablice ฤlanova, s obzirom na broj ฤlanstva 1. Skript u nastavku to postiลพe.
SELECT * FROM `members` WHERE `membership_number` = 1;
Izvrลกavanje ove skripte u MySQL radna tezga na โmyflixdbโ daje rezultat u nastavku.
| 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 |
Jedan uvjet rijetko je dovoljan. Odjeljci u nastavku kombiniraju WHERE s logiฤki operatori.
WHERE klauzula u kombinaciji s โ I LOGIฤNO Operahumka
S logiฤkim operatorom AND, redak se vraฤa samo ako su ispunjeni SVI navedeni kriteriji.
Pretpostavimo da ลพelimo sve filmove u kategoriji 2 koji su objavljeni 2008. godine. Scenarij u nastavku to postiลพe.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Izvrลกavanje gornjeg skripta na "myflixdb" daje sljedeฤi rezultat.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
I suลพava skup rezultata. ILI ga proลกiruje.
WHERE klauzula u kombinaciji s โ OR LOGIฤNO Operahumka
S operatorom OR, redak se vraฤa ako je ispunjen BILO KOJI od navedenih kriterija.
Sljedeฤi scenarij dobiva sve filmove iz kategorije 1 ili kategorije 2.
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Skup rezultata prikazan je u nastavku.
| 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 |
Lanฤano povezivanje mnogih OR uvjeta postaje teลกko za ฤitanje. Kljuฤna rijeฤ IN to rjeลกava.
WHERE klauzula u kombinaciji s โ IN Rijeฤ
Klauzula WHERE, kada se koristi s kljuฤnom rijeฤi IN, utjeฤe samo na retke ฤije vrijednosti odgovaraju navedenom popisu. IN smanjuje broj OR klauzula koje biste inaฤe napisali.
Sljedeฤe MySQL Upit WHERE IN vraฤa retke gdje je broj_ฤlanstva 1, 2 ili 3.
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Skup rezultata prikazan je u nastavku.
| 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 |
NOT IN izvodi suprotan filter.
WHERE klauzula u kombinaciji s โ NE U Rijeฤ
S kljuฤnom rijeฤi NOT IN, klauzula WHERE iskljuฤuje svaki redak ฤija vrijednost odgovara navedenom popisu.
Sljedeฤi upit daje retke gdje membership_number NIJE 1, 2 ili 3.
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Skup rezultata prikazan je u nastavku.
| 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 |
WHERE takoฤer filtrira vrijednosti prema veliฤini i jednakosti, koristeฤi operatore usporedbe.
WHERE klauzula u kombinaciji s โ USPOREDBA Operaulagatelji
Operatori usporedbe manje od (<), jednako (=), veฤe od (>) i nije jednako (<>) mogu se koristiti s klauzulom WHERE.
= Jednak
Sljedeฤa skripta dobiva sve ลพenske ฤlanice iz tablice ฤlanova pomoฤu operatora jednako za usporedbu.
SELECT * FROM `members` WHERE `gender` = 'Female';
Skup rezultata prikazan je u nastavku.
| 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 |
> Veฤi od
Sljedeฤa skripta dobiva sva plaฤanja koja su veฤa od 2,000 iz tablice plaฤanja.
SELECT * FROM `payments` WHERE `amount_paid` > 2000;
Skup rezultata prikazan je u nastavku.
| 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;
Skup rezultata prikazan je u nastavku.
| 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 |
Kratki pregled: Klauzula WHERE Operaulagatelji
Operatori koji se najฤeลกฤe uparuju s WHERE saลพeti su u nastavku. Potpune definicije nalaze se u MySQL referenca operatora.
| Operahumka | Znaฤenje | Primjer uvjeta |
|---|---|---|
| = | Jednak | `spol` = 'ลฝenski' |
| <> | Nije jednako | `id_kategorije` <> 1 |
| > / | Veฤe od / manje od | `iznos_plaฤen` > 2000 |
| I / ILI | Svi kriteriji / bilo koji kriterij | `category_id` = 2 I `year_released` = 2008 |
| UNUTRA / NIJE UNUTRA | Podudara se / iskljuฤuje popis | `broj_ฤlanstva` IN (1,2,3) |
| JE NULA / NIJE NULA | Testovi za nedostajuฤe vrijednosti | `poลกtanska_adresa` JE NULL |
โ ๏ธ Napomena: NULL se nikad ne podudara s = ili <>. Koristite IS NULL ili IS NOT NULL kada stupac moลพda ne sadrลพi vrijednost.
Mozaika: Pronaฤite filmove vraฤene kasno
Pretpostavimo da ลพelimo unajmljene filmove koji nisu vraฤeni do krajnjeg datuma 25.06.2012. To postiลพemo kombiniranjem WHERE s operatorom "manje od" i AND.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Izvrลกavanje gornje skripte u MySQL radni stol 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 |

