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.

  • 🔍 Ydintarkoitus: WHERE-lauseke rajoittaa rivejä, joita lauseke koskee, joten SELECT, UPDATE ja DELETE vaikuttavat vain toisiaan vastaaviin riveihin.
  • 🔗 JA Operator: Rivit palautetaan vain, kun jokainen ehto on tosi, mikä rajaa tulosjoukkoa.
  • 🔀 OR Operator: Rivit palautetaan, kun jokin yksittäinen ehto antaa tulokseksi tosi, mikä laajentaa tulosjoukkoa.
  • 📋 SISÄÄN ja EI SISÄÄN: IN-avainsana löytää yhden lausekkeen arvoluettelon, kun taas NOT IN sulkee pois saman luettelon.
  • 🇧🇷 Vertailu Operatorit: Yhtä suuri kuin (=), suurempi kuin (>), pienempi kuin (<) ja eri suuri kuin (<>) suodattavat numeeriset, teksti- ja päivämääräsarakkeet.
  • ⚠️ NULL-käsittely: NULL ei koskaan vastaa = tai <> -merkkiä, joten IS NULL ja IS NOT NULL vaaditaan puuttuvien arvojen testaamiseksi.

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 MySQL

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

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

> 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

UKK

WHERE suodattaa yksittäisiä rivejä ennen ryhmääping, joten se ei voi viitata koostefunktioihin. HAVING suodattaa ryhmät GROUP BY -suoritusten jälkeen, mikä tekee siitä oikean paikan ehdoille, kuten COUNT(*) > 5.

Käytä IS NULL- tai IS NOT NULL -arvoa. OperaOperaattorit, kuten = ja <>, palauttavat tuntemattoman arvon NULL, joten `postal_address` = NULL ei vastaa mitään, kun taas `postal_address` IS NULL toimii.

Kyllä, kun suodatettu sarake indeksoidaan, MySQL lukee vain vastaavat rivit taulukon skannaamisen sijaan.ping Funktion sarake, kuten VUOSI(`syntymäaika`) = 1980, estää indeksin käytön.

Kyllä. Tekoälyavustajat muuttavat selkokielen SQL:ksi ja MySQL Työpöytä voi ajaa tuloksen. RevVertaile kaikkia ehtoja kaavaasi vasten, koska malli voi keksiä sarakenimiä.

Testaa sitä ensin SELECT-komennolla. Väärä WHERE-lauseke kohdassa POISTA tai PÄIVITYS -kysely voi muuttaa jokaista riviä. Esikatsele vastaavat rivit ja käytä sitten samaa ehtoa uudelleen kirjoitustilanteessa.

Tiivistä tämä viesti seuraavasti: