Mi a WHERE záradék a MySQL-ben?
A WHERE záradék a MySQL-ben egy olyan kulcsszó, amelyet az adatok vagy sorok pontos kritériumainak megadására használnak, amelyekre a megadott SQL utasítás hatással lesz. A WHERE záradék olyan SQL utasításokkal használható, mint az INSERT, az UPDATE, a SELECT és a DELETE a rekordok szűrésére és az adatok különböző műveleteinek végrehajtására.
Megvizsgáltuk, hogyan lehet lekérdezni adatokat az adatbázisból az előző oktatóanyag SELECT utasításával. A SELECT utasítás visszaadta a lekérdezett adatbázis táblázat összes eredményét.
Ezek azonban olyan esetek, amikor a lekérdezés eredményeit egy meghatározott feltételre akarjuk korlátozni. A WHERE záradék az SQL-ben jól jön ilyen helyzetekben.
WHERE záradék Szintaxis
A WHERE záradék alapvető szintaxisa a MySQL SELECT WHERE utasításban használva a következő.
SELECT * FROM tableName WHERE condition;
ITT
- A "SELECT * FROM tableName" a szokásos SELECT utasítás
- A "WHERE" az a kulcsszó, amely korlátozza a kiválasztott lekérdezés eredményhalmazát, a "feltétel" pedig az eredményekre alkalmazandó szűrő. A szűrő lehet tartomány, egyetlen érték vagy allekérdezés.
Most nézzünk meg egy gyakorlati példát .
Tegyük fel, hogy a tagok személyes adatait meg akarjuk szerezni a tagok táblájából, megadva az 1. tagsági számot, ennek eléréséhez a következő szkriptet használjuk.
SELECT * FROM `members` WHERE `membership_number` = 1;
A fenti szkript futtatása a MySQL munkaasztalon a "myflixdb" -n a következő eredményekkel jár.
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. |
WHERE záradék kombinálva - ÉS LOGIKUS operátorral
A WHERE feltétel a MySQL-ben az AND logikai operátorral együtt használva csak akkor teljesül, ha az összes megadott szűrési feltétel teljesül. Nézzünk most egy gyakorlati példát - Tegyük fel, hogy listát szeretnénk kapni a 2. kategóriába tartozó összes filmről, amelyeket 2008-ban adtak ki, az alább látható szkriptet használnánk.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
A fenti parancsfájl futtatása a MySQL munkaasztalon a "myflixdb" ellen a következő eredményeket hozza.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
WHERE záradék kombinálva - VAGY LOGIKUS operátorral
A WHERE záradék az OR operátorral együtt használva csak akkor kerül végrehajtásra, ha bármelyik vagy a megadott szűrőkritérium teljesül. A következő szkript megkapja az 1. vagy 2. kategóriába tartozó összes filmetSELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
A fenti parancsfájl futtatása a MySQL munkaasztalon a "myflixdb" ellen a következő eredményeket hozza.
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 |
WHERE záradék - IN kulcsszóval kombinálva
A WHERE in MySQL záradék az IN kulcsszóval együtt használva csak azokat a sorokat érinti, amelyek értéke megegyezik az IN kulcsszóban megadott értékek listájával. A MySQL IN utasítás segít csökkenteni az esetleg használandó VAGY záradékok számát. A következő MySQL WHERE IN lekérdezés olyan sorokat ad meg, ahol a tagság_száma 1, 2 vagy 3SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
A fenti parancsfájl futtatása a MySQL munkaasztalon a "myflixdb" ellen a következő eredményeket hozza.
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. |
WHERE záradék a - NOT IN kulcsszóval kombinálva
A WHERE záradék a NOT IN kulcsszóval együtt NEM érinti azokat a sorokat, amelyek értéke megegyezik a NOT IN kulcsszóban megadott értékek listájával. A következő lekérdezés olyan sorokat ad, amelyekben a tagság_száma NEM 1, 2 vagy 3SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
A fenti parancsfájl futtatása a MySQL munkaasztalon a "myflixdb" ellen a következő eredményeket hozza.
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 záradék - COMPARISON Operátorokkal kombinálva
A kisebb (), egyenlő (=), nem egyenlő () összehasonlító operátorokkal használható a WHERE záradékkal= Egyenlő
A következő szkript az összes női tagot lekéri a tagok táblájából az egyenlő az összehasonlítás operátorral.SELECT * FROM `members` WHERE `gender` = 'Female';
A fenti parancsfájl futtatása a MySQL munkaasztalon a "myflixdb" ellen a következő eredményeket hozza.
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 |
> Nagyobb, mint
A következő parancsfájl az összes 2000-nél nagyobb fizetést kapja meg a fizetési táblázatból. KIVÁLASZTÁS * FROM `fizetések` WHERE` összeg_fizetett`> 2000; A fenti parancsfájl futtatása a MySQL munkaasztalon a "myflixdb" ellen a következő eredményeket hozza.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ő vele
A következő szkript megkapja az összes filmet, amelyek kategóriaazonosítója nem 1.SELECT * FROM `movies` WHERE `category_id`<> 1;A fenti parancsfájl futtatása a MySQL munkaasztalon a "myflixdb" ellen a következő eredményeket hozza.
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 |
Összegzés
- Az SQL WHERE záradék a SELECT, UPDATE vagy DELETE lekérdezés által érintett sorok számának korlátozására szolgál.
- A WHERE feltétel az SQL-ben olyan logikai operátorokkal együtt használható, mint az AND és az OR, az összehasonlító operátorokkal, mint például = = stb.
- Az AND logikai operátorral való együttes használat esetén az összes feltételnek teljesülnie kell.
- Az OR logikai operátorral történő használat esetén bármelyik feltételnek teljesülnie kell.
- Az IN kulcsszó az értékek listájának megfelelő sorok kiválasztására szolgál.
Brain Teaser Tegyük fel, hogy szeretnénk listát szerezni a kölcsönzött filmekről, amelyeket nem adtak vissza időben 2012.06.25. Ennek eléréséhez használhatjuk az SQL WHERE utasítás záradékot a kevesebb, mint összehasonlító operátorral és az AND logikai operátorral együtt.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;A fenti parancsfájl futtatása a MySQL munkaasztalon 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 |