MySQL WHERE Clauza: AND, OR, IN, NOT IN Exemplu de interogare
โก Rezumat inteligent
MySQL Clauza WHERE filtreazฤ rรขndurile รฎnainte ca acestea sฤ ajungฤ la setul de rezultate, aplicรขnd criterii precise instrucศiunilor SELECT, UPDATE ศi DELETE. รnศelegerea operatorilor AND, OR, IN, NOT IN ศi de comparaศie permite รฎncepฤtorilor sฤ recupereze exact รฎnregistrฤrile necesare unei interogฤri.

รn ce se aflฤ clauza WHERE MySQL?
UNDE Clauza in MySQL este un cuvรขnt cheie folosit pentru a specifica criteriile exacte de date sau rรขnduri care vor fi afectate de instrucศiunea SQL specificatฤ. Clauza WHERE poate fi utilizatฤ cu instrucศiuni SQL precum INSERT, UPDATE, SELECT ศi DELETE pentru a filtra รฎnregistrฤrile ศi a efectua diverse operaศii asupra datelor.
Am analizat cum sฤ interogฤm datele de la a Baza de date folosind instrucศiunea SELECT din tutorialul anterior. Instrucศiunea SELECT a returnat toate rezultatele din tabelul bazei de date interogat.
Existฤ, totuศi, momente cรขnd dorim sฤ restricศionฤm rezultatele interogฤrii la o condiศie specificatฤ. Clauza WHERE din SQL este utilฤ รฎn astfel de situaศii ศi funcศioneazฤ la fel รฎntr-un Interogare DELETE sau UPDATE aศa cum se รฎntรขmplฤ รฎntr-o interogare SELECT.
Clauza WHERE Sintaxฤ
Sintaxa de bazฤ a clauzei WHERE este urmฤtoarea.
SELECT * FROM tableName WHERE condition;
AICI
- โSELECT * FROM tableNameโ este standardul instrucศiunea SELECT
- "UNDE" este cuvรขntul cheie care restricศioneazฤ setul de rezultate ศi "condiศie" este filtrul aplicat rezultatelor. Filtrul poate fi un interval, o singurฤ valoare sau o subinterogare.
Sฤ presupunem cฤ dorim detaliile unui membru din tabela membri, avรขnd รฎn vedere numฤrul de membru 1. Scriptul de mai jos realizeazฤ acest lucru.
SELECT * FROM `members` WHERE `membership_number` = 1;
Executarea acestui script รฎn MySQL banc de lucru pe โmyflixdbโ produce rezultatul de mai jos.
| 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 |
O singurฤ condiศie este rareori suficientฤ. Secศiunile de mai jos combinฤ WHERE cu operatori logici.
Clauza WHERE combinatฤ cu โ AND LOGIC OperaTdR
Cu operatorul logic AND, un rรขnd este returnat numai dacฤ sunt รฎndeplinite TOATE criteriile specificate.
Sฤ presupunem cฤ vrem toate filmele din categoria 2 care au fost lansate รฎn 2008. Scenariul de mai jos realizeazฤ acest lucru.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Executarea scriptului de mai sus asupra โmyflixdbโ produce urmฤtorul rezultat.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
ศI restrรขnge un set de rezultate. SAU รฎl lฤrgeศte.
Clauza WHERE combinatฤ cu โ OR LOGIC OperaTdR
Cu operatorul SAU, un rรขnd este returnat dacฤ este รฎndeplinit ORICARE dintre criteriile specificate.
Urmฤtorul scenariu include toate filmele din categoria 1 sau din categoria 2.
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Setul de rezultate este prezentat mai jos.
| 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 |
รnlฤnศuirea mai multor condiศii SAU devine dificil de citit. Cuvรขntul cheie IN rezolvฤ aceastฤ problemฤ.
Clauza WHERE combinatฤ cu โ IN Cuvรขnt cheie
Clauza WHERE, atunci cรขnd este utilizatฤ cu cuvรขntul cheie IN, afecteazฤ doar rรขndurile ale cฤror valori corespund listei furnizate. IN reduce numฤrul de clauze OR pe care le-aศi scrie altfel.
Urmฤtoarele MySQL Interogarea WHERE IN dฤ rรขnduri unde membership_number este fie 1, 2, fie 3.
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Setul de rezultate este prezentat mai jos.
| 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 efectueazฤ filtrul opus.
Clauza WHERE combinatฤ cu โ NU รN Cuvรขnt cheie
Cu ajutorul cuvรขntului cheie NOT IN, clauza WHERE exclude fiecare rรขnd a cฤrui valoare corespunde cu lista furnizatฤ.
Urmฤtoarea interogare oferฤ rรขnduri unde membership_number NU este 1, 2 sau 3.
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Setul de rezultate este prezentat mai jos.
| 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 filtreazฤ, de asemenea, valorile dupฤ dimensiune ศi egalitate, utilizรขnd operatori de comparaศie.
Clauza WHERE combinatฤ cu โ COMPARAลขIE Operatori
Operatorii de comparaศie โmai mic decรขtโ (<), โegal cuโ (=), โmai mare decรขtโ (>) ศi โdiferent deโ (<>) pot fi utilizaศi cu clauza WHERE.
= Egal cu
Urmฤtorul script preia toศi membrii femei din tabelul de membri folosind operatorul de comparaศie.
SELECT * FROM `members` WHERE `gender` = 'Female';
Setul de rezultate este prezentat mai jos.
| 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 |
> Mai mare ca
Urmฤtorul script primeศte toate plฤศile care sunt mai mari de 2,000 din tabelul de plฤศi.
SELECT * FROM `payments` WHERE `amount_paid` > 2000;
Setul de rezultate este prezentat mai jos.
| 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 |
<> Diferit de
Urmฤtorul script primeศte toate filmele al cฤror id de categorie nu este 1.
SELECT * FROM `movies` WHERE `category_id` <> 1;
Setul de rezultate este prezentat mai jos.
| 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 |
Referinศฤ rapidฤ: Clauza WHERE Operatori
Operatorii cel mai des asociaศi cu WHERE sunt rezumaศi mai jos. Definiศiile complete apar รฎn MySQL referinศฤ operator.
| OperaTdR | Sens | Condiศie exemplu |
|---|---|---|
| = | Egal cu | `gen` = 'Feminin' |
| <> | Nu este egal cu | `id_categorie` <> 1 |
| > / | Mai mare decรขt / mai mic decรขt | `sumฤ_plฤtitฤ` > 2000 |
| ศI / SAU | Toate criteriile / orice criterii | `id_categorie` = 2 ศI `an_lansare` = 2008 |
| รN / NU รN | Se potriveศte cu / exclude o listฤ | `numฤr_membru` IN (1,2,3) |
| ESTE NUL / NU ESTE NUL | Teste pentru valori lipsฤ | `adresฤ_poศtalฤ` ESTE NUL |
โ ๏ธ Notฤ: NULL nu se potriveศte niciodatฤ cu = sau <>. Se foloseศte IS NULL sau IS NOT NULL atunci cรขnd o coloanฤ nu poate conศine nicio valoare.
Joc de inteligenศฤ: Gฤseศte filme returnate tรขrziu
Sฤ presupunem cฤ dorim filmele รฎnchiriate care nu au fost returnate pรขnฤ la data limitฤ de 25/06/2012. Combinarea operatorilor WHERE cu operatorii โmai puศin decรขtโ ศi AND realizeazฤ acest lucru.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Executarea scriptului de mai sus รฎn MySQL workbench dฤ urmฤtoarele rezultate.
| reference_number | transaction_date | return_date | membership_number | movie_id | movie_returned |
|---|---|---|---|---|---|
| 14 | 21-06-2012 | 24-06-2012 | 2 | 2 | 0 |

