Ce este clauza WHERE din MySQL?
Clauza WHERE din 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țiuni pe date.
Am analizat cum să interogăm date dintr-o bază de date folosind instrucțiunea SELECT din tutorialul anterior. Instrucțiunea SELECT a returnat toate rezultatele din tabelul de bază de date interogat.
Sunt totuși momente în care dorim să restrângem rezultatele interogării la o condiție specificată. Clauza WHERE din SQL este utilă în astfel de situații.
Sintaxa clauzei WHERE
Sintaxa de bază pentru clauza WHERE atunci când este utilizată într-o instrucțiune MySQL SELECT WHERE este următoarea.
SELECT * FROM tableName WHERE condition;
AICI
- „SELECT * FROM tableName” este declarația SELECT standard
- „UNDE” este cuvântul cheie care restricționează setul nostru de rezultate de interogare selectată și „condiție” este filtrul care trebuie aplicat rezultatelor. Filtrul poate fi un interval, o singură valoare sau o interogare secundară.
Să vedem acum un exemplu practic .
Să presupunem că dorim să obținem detaliile personale ale unui membru din tabelul membrilor, având în vedere numărul de membru 1, am folosi următorul script pentru a realiza acest lucru.
SELECT * FROM `members` WHERE `membership_number` = 1;
Executarea scriptului de mai sus în MySQL workbench pe „myflixdb” ar produce următoarele rezultate.
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. |
Clauza WHERE combinată cu - ȘI Operatorul LOGIC
Condiția WHERE din MySQL atunci când este utilizată împreună cu operatorul logic AND, este executată numai dacă sunt îndeplinite TOATE criteriile de filtrare specificate. Să vedem acum un exemplu practic - Să presupunem că dorim să obținem o listă cu toate filmele din categoria 2 care au fost lansate în 2008, am folosi scriptul prezentat mai jos pentru a realiza acest lucru.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Executarea scriptului de mai sus în MySQL workbench împotriva „myflixdb” produce următoarele rezultate.
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
Clauza WHERE combinată cu - SAU Operator LOGIC
Clauza WHERE, atunci când este utilizată împreună cu operatorul OR, este executată numai dacă este îndeplinit vreunul sau întregul criteriu de filtrare specificat. Următorul scenariu primește toate filmele din categoria 1 sau din categoria 2SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Executarea scriptului de mai sus în MySQL workbench împotriva „myflixdb” produce următoarele rezultate.
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 |
Clauza WHERE combinată cu - IN Cuvânt cheie
Clauza WHERE în MySQL, atunci când este utilizată împreună cu cuvântul cheie IN afectează numai rândurile ale căror valori se potrivesc cu lista de valori furnizate în cuvântul cheie IN. Declarația MySQL IN ajută la reducerea numărului de clauze SAU pe care ar trebui să le utilizați. Următoarea interogare MySQL WHERE IN oferă rânduri în care numărul de membru este fie 1, 2 sau 3SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Executarea scriptului de mai sus în MySQL workbench împotriva „myflixdb” produce următoarele rezultate.
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. |
Clauza WHERE combinată cu - NOT IN Cuvânt cheie
Clauza WHERE atunci când este utilizată împreună cu cuvântul cheie NOT IN NU afectează rândurile ale căror valori se potrivesc cu lista valorilor furnizate în cuvântul cheie NOT IN. Următoarea interogare oferă rânduri în care numărul de membru NU este 1, 2 sau 3SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Executarea scriptului de mai sus în MySQL workbench împotriva „myflixdb” produce următoarele rezultate.
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 |
Clauza WHERE combinată cu - COMPARATIV Operatori
Operatorii de comparație mai mici de (), egali cu (=), nu egali cu () pot fi utilizați cu clauza WHERE= Egal cu
Următorul script obține toți membrii de sex feminin din tabelul membrilor folosind operatorul de comparație egal cu.SELECT * FROM `members` WHERE `gender` = 'Female';
Executarea scriptului de mai sus în MySQL workbench împotriva „myflixdb” produce următoarele rezultate.
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 |
> Mai mare decât
Următorul script primește toate plățile mai mari de 2.000 din tabelul de plăți. SELECTAȚI * DIN `plăți` UNDE` sumă_plătită`> 2000; Executarea scriptului de mai sus în MySQL workbench împotriva „myflixdb” produce următoarele rezultate.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 |
<> Nu este egal cu
Următorul scenariu primește toate filmele al căror cod de categorie nu este 1.SELECT * FROM `movies` WHERE `category_id`<> 1;Executarea scriptului de mai sus în MySQL workbench împotriva „myflixdb” produce următoarele rezultate.
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 |
rezumat
- Clauza SQL WHERE este utilizată pentru a restricționa numărul de rânduri afectate de o interogare SELECT, UPDATE sau DELETE.
- Condiția WHERE din SQL poate fi utilizată împreună cu operatori logici precum AND și OR, operatori de comparație precum, = etc.
- Atunci când este utilizat cu operatorul logic AND, trebuie îndeplinite toate criteriile.
- Atunci când este utilizat cu operatorul logic OR, trebuie îndeplinite oricare dintre criterii.
- Cuvântul cheie IN este utilizat pentru a selecta rândurile care se potrivesc cu o listă de valori.
Brain Teaser Să presupunem că dorim să obținem o listă a filmelor închiriate care nu au fost returnate la timp 25/06/2012. Putem utiliza clauza de instrucțiune SQL WHERE împreună cu operatorul mai puțin comparativ și operatorul logic AND pentru a realiza 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 |