MySQL WHERE záradék: AND, OR, IN, NOT IN Lekérdezési példa
⚡ Okos összefoglaló
MySQL A WHERE záradék szűri a sorokat, mielőtt azok elérnék az eredményhalmazt, pontos feltételeket alkalmazva a SELECT, UPDATE és DELETE utasításokra. Az AND, OR, IN, NOT IN és az összehasonlító operátorok ismerete lehetővé teszi a kezdők számára, hogy pontosan azokat a rekordokat kérjék le, amelyeket a lekérdezés megkövetel.
Mi van a WHERE záradékban MySQL?
WHERE záradék in MySQL A kulcsszó az adatok vagy sorok pontos kritériumainak megadására szolgál, amelyekre a megadott SQL utasítás hatással lesz. A WHERE záradék használható olyan SQL utasításokkal, mint az INSERT, UPDATE, SELECT és DELETE a rekordok szűrésére és különféle műveletek végrehajtására az adatokon.
Megnéztük, hogyan lehet adatokat lekérdezni a adatbázis az előző oktatóanyag SELECT utasításának használatával. A SELECT utasítás az összes eredményt visszaadta a lekérdezett adatbázistáblából.
Vannak azonban olyan esetek, amikor a lekérdezés eredményeit egy adott feltételre szeretnénk korlátozni. Az SQL WHERE záradéka ilyen helyzetekben hasznos, és ugyanúgy működik egy TÖRLÉS vagy FRISSÍTÉS lekérdezés ahogyan egy SELECT lekérdezésben is.
WHERE záradék Szintaxis
A WHERE záradék alapvető szintaxisa a következő.
SELECT * FROM tableName WHERE condition;
ITT
- "SELECT * FROM tableName" a szabvány SELECT utasítás
- "AHOL" az a kulcsszó, amely korlátozza az eredményhalmazt, és "feltétel" a szűrő, amelyet az eredményekre alkalmaznak. A szűrő lehet tartomány, egyetlen érték vagy egy alkérés.
Tegyük fel, hogy egy tag adatait szeretnénk megkapni a tagok táblából, az 1-es tagsági számmal. Az alábbi szkript ezt teszi lehetővé.
SELECT * FROM `members` WHERE `membership_number` = 1;
A szkript végrehajtása itt: MySQL munkapad A „myflixdb” oldalon az alábbi eredményt kapjuk.
| 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 |
Egyetlen feltétel ritkán elegendő. Az alábbi szakaszok a WHERE és a logikai operátorok.
WHERE záradék a – ÉS LOGIKUS Operator
Az ÉS logikai operátorral egy sor csak akkor adható vissza, ha MINDEN megadott feltétel teljesül.
Tegyük fel, hogy a 2. kategóriába tartozó összes, 2008-ban megjelent filmet szeretnénk. Az alábbi szkript ezt eléri.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
A fenti szkript „myflixdb”-n történő futtatása a következő eredményt hozza létre.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
Az ÉS művelet szűkíti az eredményhalmazt. A VAGY művelet szélesíti azt.
WHERE záradék a – OR LOGIKUS Operator
Az OR operátorral egy sor kerül visszaadásra, ha a megadott feltételek BÁRMELYIKE teljesül.
A következő szkript az 1-es vagy a 2-es kategóriába tartozó összes filmet kikeresi.
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Az eredményhalmaz alább látható.
| 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 |
Sok VAGY feltétel láncolása nehezen olvasható. Az IN kulcsszó megoldja ezt a problémát.
WHERE záradék a – IN Kulcsszó
A WHERE záradék az IN kulcsszóval használva csak azokat a sorokat érinti, amelyek értékei megegyeznek a megadott listával. Az IN csökkenti az egyébként írandó OR záradékok számát.
A következő MySQL A WHERE IN lekérdezés olyan sorokat ad vissza, ahol a tagsági_szám értéke 1, 2 vagy 3.
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Az eredményhalmaz alább látható.
| 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 |
A NOT IN az ellenkező szűrést végzi.
WHERE záradék a – NEM BENT Kulcsszó
A NOT IN kulcsszó használatával a WHERE záradék kizár minden olyan sort, amelynek értéke megegyezik a megadott listával.
A következő lekérdezés olyan sorokat ad vissza, ahol a tagsági_szám NEM 1, 2 vagy 3.
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Az eredményhalmaz alább látható.
| 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 |
A WHERE függvény összehasonlító operátorok segítségével szűri az értékeket méret és egyenlőség szerint is.
WHERE záradék a – ÖSSZEHASONLÍTÁS Operatorzok
A kisebb mint (<), egyenlő (=), nagyobb mint (>) és nem egyenlő (<>) összehasonlító operátorok mind használhatók a WHERE záradékkal.
= Egyenlő
A következő szkript lekéri az összes női tagot a tagok táblájából az egyenlő összehasonlítás operátor használatával.
SELECT * FROM `members` WHERE `gender` = 'Female';
Az eredményhalmaz alább látható.
| 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 |
> Nagyobb, mint
A következő szkript lekéri a 2,000-nél nagyobb kifizetéseket a fizetési táblázatból.
SELECT * FROM `payments` WHERE `amount_paid` > 2000;
Az eredményhalmaz alább látható.
| 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 |
<> Nem egyenlő
A következő forgatókönyv megkapja az összes olyan filmet, amelynek kategóriaazonosítója nem 1.
SELECT * FROM `movies` WHERE `category_id` <> 1;
Az eredményhalmaz alább látható.
| 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 |
Gyorsreferencia: WHERE záradék Operatorzok
A WHERE-vel leggyakrabban párosított operátorokat az alábbiakban foglaljuk össze. A teljes definíciók a leírásban találhatók. MySQL operátorhivatkozás.
| Operator | Jelentés | Példafeltétel |
|---|---|---|
| = | Egyenlő | `nem` = 'Nő' |
| <> | Nem egyenlő | `kategória_azonosító` <> 1 |
| > / | Nagyobb, mint / kisebb, mint | `fizetett_összeg` > 2000 |
| ÉS / VAGY | Minden kritérium / bármely kritérium | `kategória_azonosító` = 2 ÉS `megjelenési_év` = 2008 |
| BE / NEM BE | Egyezik / kizár egy listát | `tagsági_szám` IN (1,2,3) |
| NULL / NEM NULL | Hiányzó értékek tesztelése | A `postai_cím` NULL |
⚠️ Megjegyzés: A NULL soha nem egyezik meg az = vagy <> karakterekkel. Az IS NULL vagy az IS NOT NULL paramétert akkor kell használni, ha egy oszlopban esetleg nincs érték.
Fejtörő: Későn visszaküldött filmek keresése
Tegyük fel, hogy a 2012.06.25-i határidőig vissza nem küldött kölcsönzött filmeket keressük. Ezt a WHERE operátor, a „kevesebb, mint” operátor és az AND operátor kombinációjával érhetjük el.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
A fenti szkript végrehajtása MySQL munkapad a következő eredményeket adja.
| reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
|---|---|---|---|---|---|
| 14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |


