MySQL WHERE-lause: AND, OR, IN, NOT IN Kyselyesimerkki
⚡ Älykäs yhteenveto
MySQL WHERE-lauseke suodattaa rivit ennen tulosjoukkoon pääsyä soveltamalla tarkkoja kriteerejä SELECT-, UPDATE- ja DELETE-lausekkeisiin. AND-, OR-, IN-, NOT IN- ja vertailuoperaattoreiden ymmärtäminen antaa aloittelijoille mahdollisuuden hakea juuri ne tietueet, joita kysely vaatii.

Missä on WHERE-lauseke MySQL?
WHERE in MySQL on avainsana, jota käytetään määrittämään tarkat kriteerit tiedoille tai riveille, joihin määritetty SQL-käsky vaikuttaa. WHERE-lausetta voidaan käyttää SQL-käskyjen, kuten INSERT, UPDATE, SELECT ja DELETE, kanssa tietueiden suodattamiseen ja erilaisten toimintojen suorittamiseen tiedoilla.
Tarkastelimme, kuinka tietoja voidaan kysyä osoitteesta a tietokanta käyttämällä edellisen opetusohjelman SELECT-lausetta. SELECT-käsky palautti kaikki tulokset kyselystä tietokantataulukosta.
On kuitenkin tilanteita, joissa haluamme rajoittaa kyselyn tulokset tiettyyn ehtoon. SQL:n WHERE-lauseke on hyödyllinen tällaisissa tilanteissa, ja se toimii samalla tavalla POISTA tai PÄIVITYS -kysely kuten se tekee SELECT-kyselyssä.
WHERE-lause Syntaksi
WHERE-lauseen perussyntaksi on seuraava.
SELECT * FROM tableName WHERE condition;
TÄÄLTÄ
- "SELECT * FROM tableName" on standardi SELECT-lause
- "MISSÄ" on avainsana, joka rajoittaa tulosjoukkoa, ja "kunto" on tuloksiin käytetty suodatin. Suodatin voi olla alue, yksittäinen arvo tai alikysely.
Oletetaan, että haluamme jäsenen tiedot jäsenet-taulukosta, kun annetaan jäsenyysnumero 1. Alla oleva skripti saavuttaa tämän.
SELECT * FROM `members` WHERE `membership_number` = 1;
Suoritetaan tätä komentosarjaa kohdassa MySQL työpöytä ”myflixdb”-haulla saadaan alla oleva tulos.
| 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 |
Yksi ehto on harvoin riittävä. Alla olevat osiot yhdistävät WHERE:n ja loogiset operaattorit.
WHERE-lause yhdistettynä - JA LOOGINEN OperaTor
AND-loogista operaattoria käytettäessä rivi palautetaan vain, jos KAIKKI määritetyt ehdot täyttyvät.
Oletetaan, että haluamme kaikki kategorian 2 elokuvat, jotka julkaistiin vuonna 2008. Alla oleva skripti saavuttaa tämän.
SELECT * FROM `movies` WHERE `category_id` = 2 AND `year_released` = 2008;
Yllä olevan komentosarjan suorittaminen "myflixdb"-tiedostoa vastaan tuottaa seuraavan tuloksen.
| movie_id | title | director | year_released | category_id |
|---|---|---|---|---|
| 2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
JA rajaa tulosjoukkoa. TAI laajentaa sitä.
WHERE-lause yhdistettynä - OR LOOGINEN OperaTor
TAI-operaattorilla palautetaan rivi, jos MIKÄ TAHANSA määritetyistä ehdoista täyttyy.
Seuraava skripti hakee kaikki elokuvat joko luokasta 1 tai luokasta 2.
SELECT * FROM `movies` WHERE `category_id` = 1 OR `category_id` = 2;
Tulosjoukko näkyy alla.
| 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 |
Useiden OR-ehtojen ketjuttaminen vaikeutuu. IN-avainsana ratkaisee tämän.
WHERE-lause yhdistettynä - IN avainsana
Kun WHERE-lauseketta käytetään IN-avainsanan kanssa, se vaikuttaa vain riveihin, joiden arvot vastaavat annettua luetteloa. IN vähentää muuten kirjoitettavien OR-lausekkeiden määrää.
Seuraavat MySQL WHERE IN -kysely antaa rivejä, joilla jäsenyysnumero on joko 1, 2 tai 3.
SELECT * FROM `members` WHERE `membership_number` IN (1,2,3);
Tulosjoukko näkyy alla.
| 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 suorittaa päinvastaisen suodatuksen.
WHERE-lause yhdistettynä - EI SISÄLLÄ avainsana
NOT IN -avainsanalla WHERE-lauseke sulkee pois kaikki rivit, joiden arvo vastaa annettua listaa.
Seuraava kysely antaa rivejä, joilla jäsenyysnumero EI ole 1, 2 tai 3.
SELECT * FROM `members` WHERE `membership_number` NOT IN (1,2,3);
Tulosjoukko näkyy alla.
| 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 suodattaa arvoja myös koon ja yhtäsuuruuden mukaan käyttäen vertailuoperaattoreita.
WHERE-lause yhdistettynä - VERTAILU OperaTors
Pienempi kuin (<), yhtä suuri kuin (=), suurempi kuin (>) ja erisuuri kuin (<>) -vertailuoperaattoreita voidaan kaikki käyttää WHERE-lauseen kanssa.
= Yhtä kuin
Seuraava skripti hakee kaikki naisjäsenet jäsentaulukosta käyttämällä yhtäläinen vertailu -operaattoria.
SELECT * FROM `members` WHERE `gender` = 'Female';
Tulosjoukko näkyy alla.
| 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 |
> Suurempi kuin
Seuraava komentosarja hakee kaikki maksut, jotka ovat yli 2,000 XNUMX maksutaulukosta.
SELECT * FROM `payments` WHERE `amount_paid` > 2000;
Tulosjoukko näkyy alla.
| 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 yhtä suuri kuin
Seuraava käsikirjoitus saa kaikki elokuvat, joiden luokkatunnus ei ole 1.
SELECT * FROM `movies` WHERE `category_id` <> 1;
Tulosjoukko näkyy alla.
| 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 |
Pikaopas: WHERE-lauseke OperaTors
Useimmiten WHERE-operaattorin kanssa yhdistetyt operaattorit on esitetty alla. Täydelliset määritelmät löytyvät kohdasta MySQL operaattorin viite.
| OperaTor | Merkitys | Esimerkkiehto |
|---|---|---|
| = | Yhtä kuin | `sukupuoli` = 'Nainen' |
| <> | Ei ole yhtä suuri kuin | `kategoria_id` <> 1 |
| > / | Suurempi kuin / pienempi kuin | `maksettu_summa` > 2000 |
| JA / TAI | Kaikki kriteerit / mitkä tahansa kriteerit | `kategoria_id` = 2 JA `julkaisuvuosi` = 2008 |
| SISÄÄN / EI SISÄÄN | Vastaa / sulkee pois listan | `jäsenyysnumero` IN (1,2,3) |
| ON TYHJÄ / EI OLE TYHJÄ | Puuttuvien arvojen testit | `postiosoite` ON TYHJÄ |
⚠️ Huomaa: NULL ei koskaan vastaa = tai <> -merkkiä. Käytä IS NULL- tai IS NOT NULL -merkintää, kun sarakkeessa ei ehkä ole arvoa.
Aivojuttu: Löydä myöhässä palautetut elokuvat
Oletetaan, että haluamme vuokraelokuvat, joita ei ole palautettu viimeistään 25.6.2012 mennessä. Yhdistämällä WHERE-operaattorin pienemmän kuin-operaattorin ja AND-operaattorin saat tämän tuloksen.
SELECT * FROM `movierentals` WHERE `return_date` < '2012-06-25' AND movie_returned = 0;
Suoritetaan yllä oleva komentosarja MySQL työpöytä 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 |

