MySQL WHERE klauzula: AND, OR, IN, NOT IN Query Example

Tartalomjegyzék:

Anonim

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 a MySQL-ben

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 email
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 filmet
SELECT * 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 3
SELECT * 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 email
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 3
SELECT * 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 email
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 email
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