MySQL WHERE -lauseke: AND, OR, IN, NOT in Query Example

Sisällysluettelo:

Anonim

Mikä on WHERE-lause MySQL: ssä?

WHERE-lause MySQL: ssä on avainsana, jota käytetään määrittämään tarkat kriteerit tiedoille tai riveille, joihin määritetty SQL-käsky vaikuttaa. WHERE-lauseketta voidaan käyttää SQL-käskyjen, kuten INSERT, UPDATE, SELECT ja DELETE, kanssa suodattamaan tietueita ja suorittamaan erilaisia ​​toimintoja tiedoille.

Tarkastelimme, kuinka tietoja voidaan hakea tietokannasta käyttämällä edellisen opetusohjelman SELECT-käskyä. SELECT-käsky palautti kaikki kysellyn tietokantataulukon tulokset.

Ne ovat kuitenkin aikoja, jolloin haluamme rajoittaa kyselyn tulokset tiettyyn ehtoon. SQL-lauseen WHERE-lause on kätevä tällaisissa tilanteissa.

WHERE-lauseke MySQL: ssä

WHERE-lausekkeen syntakse

WHERE-lauseen perussyntaksi, kun sitä käytetään MySQL SELECT WHERE -lausekkeessa, on seuraava.

SELECT * FROM tableName WHERE condition;

TÄSSÄ

  • "SELECT * FROM tableName" on tavallinen SELECT-käsky
  • "WHERE" on avainsana, joka rajoittaa valitun kyselyn tulosjoukkoamme, ja "condition" on tuloksiin sovellettava suodatin. Suodatin voi olla alue, yksittäinen arvo tai alakysely.

Katsotaanpa nyt käytännön esimerkkiä .

Oletetaan, että haluamme saada jäsenen henkilökohtaiset tiedot jäsentaulukosta, joka antaa jäsenyyden numeron 1, käytämme seuraavaa komentosarjaa sen saavuttamiseksi.

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

Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä "myflixdb": llä tuottaa seuraavat tulokset.

 
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-lauseke yhdistettynä operaattoriin - AND LOGICAL

MySQL: n WHERE-ehto, kun sitä käytetään yhdessä loogisen operaattorin AND kanssa, suoritetaan vain, jos KAIKKI määritetyt suodatinkriteerit täyttyvät. Katsotaan nyt käytännön esimerkkiä - Oletetaan, että haluamme saada luettelon kaikista luokan 2 elokuvista, jotka julkaistiin vuonna 2008, käytämme alla esitettyä komentosarjaa.

SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;

Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä "myflixdb": tä vastaan ​​tuottaa seuraavat tulokset.

 
movie_id title director year_released category_id
2 Forgetting Sarah Marshal Nicholas Stoller 2008 2

WHERE-lauseke yhdistettynä - OR LOGICAL Operatoriin

WHERE-lauseke, kun sitä käytetään yhdessä OR-operaattorin kanssa, toteutetaan vain, jos jokin tai kaikki määritetyt suodatinkriteerit täyttyvät. Seuraava käsikirjoitus saa kaikki kategorian 1 tai 2 elokuvat
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;

Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä "myflixdb": tä vastaan ​​tuottaa seuraavat tulokset.

 
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-lauseke yhdistettynä - IN- avainsanaan

WHERE in MySQL -lauseke, kun sitä käytetään yhdessä IN-avainsanan kanssa, vaikuttaa vain riveihin, joiden arvot vastaavat IN-avainsanassa annettujen arvojen luetteloa. MySQL IN -käsky auttaa vähentämään TAI-lausekkeita, joita saatat joutua käyttämään. Seuraava MySQL WHERE IN -kysely antaa rivejä, joissa jäsenyysnumero on joko 1, 2 tai 3
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);

Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä "myflixdb": tä vastaan ​​tuottaa seuraavat tulokset.

 
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-lauseke yhdistettynä - NOT IN -avainsanaan

WHERE-lauseke, kun sitä käytetään yhdessä NOT IN-avainsanan kanssa, EI vaikuta riveihin, joiden arvot vastaavat NOT IN -avainsanassa annettujen arvojen luetteloa. Seuraava kysely antaa rivejä, joissa jäsenyysnumero EI ole 1, 2 tai 3
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);

Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä "myflixdb": tä vastaan ​​tuottaa seuraavat tulokset.

 
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-lauseke yhdessä - VERTAILU-operaattoreiden kanssa

Pienempää kuin (), yhtä suuri kuin (=), ei yhtä kuin () vertailuoperaattoria, voidaan käyttää WHERE-lauseen kanssa

= Yhtä suuri kuin

Seuraava komentosarja saa kaikki naisjäsenet jäsentaulukosta käyttämällä yhtäläisyyden vertailuoperaattoria.
SELECT * FROM `members` WHERE `gender` = 'Female';

Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä "myflixdb": tä vastaan ​​tuottaa seuraavat tulokset.

 
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

> Suurempi kuin

Seuraava komentosarja saa kaikki maksut, jotka ovat yli 2 000, maksutaulukosta. VALITSE * FROM `maksuista 'WHERE` summa_maksettu`> 2000; Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä "myflixdb": tä vastaan ​​tuottaa seuraavat tulokset.
 
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

<> Ei ole yhtä suuri kuin

Seuraava komentosarja saa kaikki elokuvat, joiden luokkatunnus ei ole 1.
SELECT * FROM `movies` WHERE `category_id`<> 1;
Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä "myflixdb": tä vastaan ​​tuottaa seuraavat tulokset.
 
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

Yhteenveto

  • SQL WHERE -lauseketta käytetään rajoittamaan niiden rivien määrää, joihin SELECT-, UPDATE- tai DELETE-kysely vaikuttaa.
  • SQL-järjestelmän WHERE-ehtoa voidaan käyttää yhdessä loogisten operaattoreiden, kuten AND ja OR, vertailuoperaattoreiden, kuten, jne kanssa.
  • Kun sitä käytetään AND-loogisen operaattorin kanssa, kaikkien ehtojen on täytyttävä.
  • Kun sitä käytetään loogisen operaattorin OR kanssa, minkä tahansa ehdoista on täytettävä.
  • Avainsanalla IN käytetään arvoluetteloa vastaavia rivejä.

Brain Teaser Oletetaan, että haluamme saada luettelon vuokratuista elokuvista, joita ei ole palautettu ajoissa 25.06.2012. Voimme käyttää SQL WHERE -lauseketta yhdessä alle vertailuoperaattorin ja loogisen operaattorin kanssa sen saavuttamiseksi.

SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Yllä olevan komentosarjan suorittaminen MySQL-työpöydällä antaa seuraavat tulokset.
 
reference_number transaction_date return_date membership_number movie_id movie_returned
14 21-06-2012 24-06-2012 2 2 0