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-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 | |
---|---|---|---|---|---|---|---|
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 elokuvatSELECT * 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 3SELECT * 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 | |
---|---|---|---|---|---|---|---|
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 3SELECT * 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 | |
---|---|---|---|---|---|---|---|
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 | |
---|---|---|---|---|---|---|---|
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 |