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.

  • 🔍 Fő cél: A WHERE záradék korlátozza, hogy egy utasítás mely sorokat érintse, így a SELECT, UPDATE és DELETE csak az egyező sorokat érinti.
  • 🔗 ÉS Operator: A sorok csak akkor kerülnek visszaadásra, ha minden feltétel igaz értéket ad ki, ami szűkíti az eredményhalmazt.
  • 🔀 OR Operator: A sorok akkor térnek vissza, amikor bármelyik feltétel igaz értéket ad ki, ezzel szélesítve az eredményhalmazt.
  • 📋 BE és NEM BE: Az IN kulcsszó egy kifejezésben szereplő értékek listájára illeszkedik, míg a NOT IN kulcsszó kizárja ugyanazt a listát.
  • 🇧🇷 Compare Operators: Egyenlő (=), nagyobb, mint (>), kisebb, mint (<) és nem egyenlő (<>) szűrők numerikus, szöveges és dátum oszlopokhoz.
  • ⚠️ NULL kezelés: A NULL soha nem egyezik meg az = vagy <> karakterekkel, ezért az IS NULL és az IS NOT NULL paraméterek szükségesek a hiányzó értékek kereséséhez.

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 kitétel benne MySQL

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

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

> 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

GYIK

WHERE szűri az egyes sorokat a grou előttping, így nem hivatkozhat összesítő függvényekre. A HAVING a GROUP BY futtatása után szűri a csoportokat, így megfelelő hely olyan feltételekhez, mint a COUNT(*) > 5.

Használja az IS NULL vagy az IS NOT NULL értéket. OperaAz olyan objektumok, mint a = és <>, ismeretlen értéket adnak vissza NULL esetén, tehát a `postal_address` = NULL nem egyezik semmivel, míg a `postal_address` IS NULL működik.

Igen, amikor a szűrt oszlop indexelve van, MySQL csak az egyező sorokat olvassa be a táblázat beolvasása helyett.ping Egy függvényben lévő oszlop, például a YEAR(`születési_date`) = 1980, megakadályozza az indexek használatát.

Igen. A mesterséges intelligencia asszisztensei a közérthető angolt SQL-lé alakítják, és MySQL Workbench lefuttathatja az eredményt. RevVizsgáljon meg minden feltételt a sémával szemben, mert egy modell kitalálhat oszlopneveket.

Először a SELECT-tel teszteld. Hibás WHERE záradék a TÖRLÉS vagy FRISSÍTÉS lekérdezés minden sort módosíthat. Tekintse meg az egyező sorokat, majd használja újra ugyanazt a feltételt az íráshoz.

Foglald össze ezt a bejegyzést a következőképpen: