MySQL WHERE Clauza: AND, OR, IN, NOT IN Exemplu de interogare

Î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.

Sunt totuși momente în care dorim să restricționăm rezultatele interogării la o condiție specificată. Clauza WHERE din SQL este utilă în astfel de situații.

WHERE clauza în MySQL
WHERE clauza în MySQL

Clauza WHERE Sintaxă

Sintaxa de bază pentru clauza WHERE atunci când este utilizată în a MySQL Instrucțiunea SELECT WHERE este după cum urmează.

SELECT * FROM tableName WHERE condition;

AICI

  • „SELECT * FROM tableName” este standardul instrucțiunea SELECT
  • "UNDE" este cuvântul cheie care limitează setul nostru de rezultate ale interogării selectate și "condiție" este filtrul care trebuie aplicat rezultatelor. Filtrul poate fi un interval, o singură valoare sau o subinterogare.

Să ne uităm acum la a 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, vom folosi următorul script pentru a realiza acest lucru.

SELECT * FROM `members` WHERE `membership_number` = 1;

Executarea scriptului de mai sus în MySQL banc de lucru pe „myflixdb” ar produce următoarele rezultate.

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

Clauza WHERE combinată cu – AND LOGIC OperaTdR

Condiția WHERE în MySQL atunci când este utilizat împreună cu operatorul logic AND, este executat numai dacă sunt îndeplinite TOATE criteriile de filtrare specificate.

Să ne uităm acum la un exemplu practic – Să presupunem că vrem să obținem o listă cu toate filmele din categoria 2 care au fost lansate în 2008, vom folosi scenariul prezentat mai jos pentru a realiza asta.
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 – OR LOGIC OperaTdR

Clauza WHERE atunci când este utilizată împreună cu operatorul OR, este executată numai dacă este îndeplinit unul sau întregul criteriu de filtru specificat.
Următorul scenariu primește toate filmele din categoria 1 sau din categoria 2
SELECT * 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

UNDE în MySQL clauza, 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 furnizată în cuvântul cheie IN. The MySQL Instrucțiunea IN ajută la reducerea numărului de clauze OR pe care este posibil să trebuiască să le utilizați.
Următoarele MySQL interogarea WHERE IN oferă rânduri în care membership_number este fie 1, 2 sau 3
SELECT * 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 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

Clauza WHERE combinată cu – NU ÎN 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 de valori furnizată în cuvântul cheie NOT IN.
Următoarea interogare oferă rânduri în care membership_number NU este 1, 2 sau 3
SELECT * 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 email
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

Clauza WHERE combinată cu – COMPARAŢIE Operatori

Operatorii de comparație mai mic decât (), egal cu (=), nu egal cu () 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';

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

> Mai mare ca

Următorul script primește toate plățile care sunt mai mari de 2,000 din tabelul de plăți.
SELECTAȚI * DIN `plăți` WHERE `suma_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 script primește toate filmele al căror id 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 folosită pentru a restricționa numărul de rânduri afectate de un SELECT, UPDATE sau ȘTERGERE interogarea.
  • Condiția WHERE din SQL poate fi utilizată împreună cu operatori logici precum AND și SAU, operatori de comparație precum ,= etc.
  • Când este utilizat cu AND operator logic, trebuie îndeplinite toate criteriile.
  • Când este utilizat cu operatorul logic SAU, oricare dintre criterii trebuie îndeplinit.
  • Cuvântul cheie IN este folosit pentru a selecta rândurile care corespund unei liste de valori.

Joc de inteligență

Să presupunem că vrem să obținem o listă de filme închiriate care nu au fost returnate la timp 25/06/2012. Putem folosi clauza instrucțiunii SQL WHERE împreună cu operatorul de comparație mai puțin decât ș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