MySQL SELECT Lauseke esimerkkeineen
โก รlykรคs yhteenveto
MySQL SELECT-lauseke noutaa rivejรค yhdestรค tai useammasta taulukosta, ja jokainen alla oleva esimerkki suoritetaan myflix-esimerkkitietokantaa vasten siirtyen tavallisesta tรคhtikyselystรค lausekkeisiin, sarakealiaksiin ja merkkijonofunktioihin.

Mikรค on SELECT-kysely? MySQL?
SELECT-kysely kรคytetรครคn tiedon hakemiseen MySQL tietokanta. Tietokannat tallentavat tiedot myรถhempรครค hakua varten. Tarkoitus MySQL SELECT-kyselyn tarkoituksena on palauttaa tietokannasta yksi tai useampi rivi, jotka vastaavat annettuja ehtoja. SELECT-kyselyรค voidaan kรคyttรครค skriptikielillรค, kuten PHP tai Ruby, tai voit suorittaa sen komentokehotteesta.
Koska SELECT on komento, jota kรคytรคt useimmin, kannattaa opetella sen syntaksi ennen esimerkkidataan koskemista.
SQL SELECT -lausekkeen syntaksi
SELECT on useimmin kรคytetty SQL-komento, ja sillรค on seuraava yleinen syntaksi:
SELECT [DISTINCT|ALL] { * | [fieldExpression [AS newName]} FROM tableName [alias] [WHERE condition] [GROUP BY fieldName(s)] [HAVING condition] [ORDER BY fieldName(s)];
TรรLTร
- VALITSE on SQL-avainsana, jonka avulla tietokanta tietรครค, ettรค haluat hakea tietoja.
- [DISTINCT | KAIKKI] ovat valinnaisia โโavainsanoja, jotka hienosรครคtรคvรคt SQL SELECT -lausekkeen palauttamia tuloksia. Jos mitรครคn ei mรครคritetรค, oletusarvoksi oletetaan ALL.
- {*| [fieldExpression [AS newName]} Ainakin yksi osa on mรครคritettรคvรค. โ*โ valitsee kaikki kentรคt mรครคritetystรค taulukon nimestรค; fieldExpression suorittaa laskutoimituksia mรครคritetyille kentille, kuten laskee yhteen numeroita tai yhdistรครค kaksi merkkijonokenttรครค yhdeksi.
- FROM tableName on pakollinen ja sen on sisรคllettรคvรค vรคhintรครคn yksi taulukko. Useat taulukot on erotettava pilkuilla tai yhdistettรคvรค JOIN-avainsanalla.
- MISTร ehto on valinnainen. Se mรครคrittรครค kriteerit kyselyn palauttamassa tulosjoukossa.
- GROUP BY kรคytetรครคn koota tietueita, joilla on samat kenttรคarvot.
- oTTAA ehtoa kรคytetรครคn ehtojen mรครคrittรคmiseen GROUP BY -avainsanaa kรคytettรคessรค.
- TILAUS kรคytetรครคn mรครคrittรคmรครคn tulosjoukon lajittelujรคrjestys.
*
Tรคhti-symboli valitsee kaikki taulukon sarakkeet. Yksinkertainen SELECT-lauseke nรคyttรครค alla olevalta.
SELECT * FROM `members`;
Yllรค oleva lauseke valitsee kaikki kentรคt jรคsentaulukosta. Puolipiste on lausekkeen pรครคttรคvรค merkki. Se ei ole pakollinen, mutta lausekkeiden lopettaminen tรคllรค tavalla pidetรครคn hyvรคnรค kรคytรคntรถnรค.
VALITSE DISTINCT ja LIMIT sisรครคn MySQL
Kaksi valinnaista avainsanaa syntaksissa ansaitsevat tarkemman tarkastelun, koska aloittelijat kohtaavat ne heti taulukon kasvaessa.
DISTINCT poistaa tulosjoukosta kaksoisrivit. Elokuvat-taulukko sisรคltรครค useita vuonna 2007 julkaistuja elokuvia, joten tavallinen kysely toistaa kyseisen vuoden. DISTINCT palauttaa jokaisen arvon kerran.
SELECT DISTINCT `year_released` FROM `movies`;
RAJOITA rajoittaa palautettavien rivien mรครคrรคn, mikรค suojaa asiakasta kyselyltรค, joka muutoin noutaisi miljoonia tietueita.
SELECT * FROM `movies` LIMIT 5;
| avainsana | Mitรค se tekee | Milloin sitรค kรคytetรครคn |
|---|---|---|
| KAIKKI (oletus) | Palauttaa kaikki vastaavat rivit, mukaan lukien kaksoiskappaleet | Raakadatietueiden laskeminen tai listaaminen |
| DISTINCT | Yhdistรครค kaksoisrivit yhdeksi | Ainutlaatuisten arvojen luettelon rakentaminen |
| RAJOITA | Palauttaa vain ensimmรคiset N riviรค | Tietojen tai sivutustulosten esikatselu |
Kun syntaksi on vakiintunut, esimerkkitietokanta herรคttรครค nรคmรค lausekkeet eloon.
SELECT-lausekkeen kรคytรคnnรถn esimerkkejรค
Lataa napsauttamalla tรคtรค kรคytรคnnรถn esimerkeissรค kรคytetty myflix-tietokanta.
Voit oppia tuomaan .sql-tiedoston MySQL Tyรถpรถytรค.
Esimerkit suoritetaan seuraavilla kahdella taulukolla.
Taulukko 1: jรคseniรค taulukko
| jรคsennumero | full_names | sukupuoli | syntymรคaika | fyysinen osoite | postiosoite | yhteystieto_ numero | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Nainen | 21-07-1980 | First Street -tontti nro 4 | Yksityinen laukku | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Nainen | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Mies | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Nainen | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Taulukko 2: Elokuvat taulukko
| elokuvan_tunnus | otsikko | johtaja | vuosi_vapautettu | kategorian_tunnus |
|---|---|---|---|---|
| 1 | Pirates of the Caribbean 4 | Rob Marshall | 2011 | 1 |
| 2 | Sarah Marshal unohdetaan | Nicholas Stoller | 2008 | 2 |
| 3 | X-Men | NULL | 2008 | NULL |
| 4 | Code Nimi Musta | Edgar Jimz | 2010 | NULL |
| 5 | Isรคn pienet tytรถt | NULL | 2007 | 8 |
| 6 | enkelit ja demonit | NULL | 2007 | 6 |
| 7 | DaVinci Code | NULL | 2007 | 6 |
| 9 | Honey mooners | John Schultz | 2005 | 8 |
| 16 | 67% syyllinen | NULL | 2012 | NULL |
Jรคsenlistauksen saaminen
Oletetaan, ettรค haluamme listan kaikista rekisterรถidyistรค kirjaston jรคsenistรค tietokannassamme. Kรคyttรคisimme siihen alla olevaa skriptiรค.
SELECT * FROM `members`;
Skriptin suorittaminen kohdassa MySQL Tyรถpรถytรค tuottaa seuraavat tulokset.
| jรคsennumero | full_names | sukupuoli | syntymรคaika | fyysinen osoite | postiosoite | yhteystieto_ numero | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Nainen | 21-07-1980 | First Street -tontti nro 4 | Yksityinen laukku | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Nainen | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Mies | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Nainen | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Kysely palautti kaikki rivit ja sarakkeet jรคsentaulukosta.
Tiettyjen sarakkeiden valitseminen
Oletetaan, ettรค olemme kiinnostuneita vain kentistรค full_names (koko nimi), gender (sukupuoli), physical_address (fyysinen_osoite) ja email (sรคhkรถpostiosoite). Seuraava skripti tekee tรคmรคn.
SELECT `full_names`,`gender`,`physical_address`, `email` FROM `members`;
Skriptin suorittaminen kohdassa MySQL Tyรถpรถytรค tuottaa seuraavat tulokset.
| full_names | sukupuoli | fyysinen osoite | |
|---|---|---|---|
| Janet Jones | Nainen | First Street -tontti nro 4 | janetjones@yagoo.cm |
| Janet Smith Jones | Nainen | Melrose 123 | jj@fstreet.com |
| Robert Phil | Mies | 3rd Street 34 | rm@tstreet.com |
| Gloria Williams | Nainen | 2nd Street 23 | NULL |
Elokuvalistauksen saaminen ilmaisuilla
Lausekkeita voidaan kรคyttรครค myรถs SELECT-lausekkeissa. Oletetaan, ettรค haluamme listan elokuvista, joissa on nimi ja ohjaajan nimi yhdessรค kentรคssรค, ohjaaja suluissa sekรค elokuvan julkaisuvuosi. Seuraava skripti tekee tรคmรคn.
SELECT Concat(`title`, ' (', `director`, ')') , `year_released` FROM `movies`;
TรรLTร
- Concat() MySQL funktio yhdistรครค sarakkeiden arvot.
- Rivi โConcat(`title`, ' (', `director`, ')')โ hakee otsikon, lisรครค aloittavan hakasulkeen, jota seuraa ohjaajan nimi, ja lopuksi lisรครค lopettavan hakasulkeen.
- Merkkijonojen osat erotetaan toisistaan โโpilkuilla Concat()-funktion sisรคllรค.
Skriptin suorittaminen kohdassa MySQL Workbench tuottaa seuraavan tulosjoukon.
| Concat(`title`, '(', `ohjaaja', ')') | vuosi_vapautettu |
|---|---|
| Pirates of the Caribean 4 (Rob Marshall) | 2011 |
| Sarah Marshalin unohtaminen (Nicholas Stoller) | 2008 |
| NULL | 2008 |
| Code Nimi Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooners (John Schultz) | 2005 |
| NULL | 2012 |
Huomautus: Concat() palauttaa NULL-arvon, kun jokin argumentti on NULL, minkรค vuoksi elokuvat, joissa ei ole ohjaajaa, nรคyttรคvรคt yllรค NULL-arvon.
Alias-kenttien nimet
Yllรค oleva esimerkki palautti kentรคn nimenรค ketjutuskoodin. Jos haluat kรคyttรครค kuvaavampaa kentรคn nimeรค tulosjoukossa, kรคytรค sarakealiasta. Perussyntaksi on seuraava.
SELECT `column_name|value|expression` [AS] `alias_name`;
TรรLTร
- โSELECT `sarakkeen_nimi|arvo|lauseke`โ on tavallinen SELECT-lauseke, joka voi olla sarakkeen nimi, arvo tai lauseke.
- "[KUTEN]" on valinnainen avainsana ennen alias-nimeรค.
- "alias_name" on alias, joka palautetaan tulosjoukossa kentรคn nimenรค.
Sama kysely merkityksellisemmรคllรค sarakkeen nimellรค:
SELECT Concat(`title`, ' (', `director`, ')') AS `Concat`, `year_released` FROM `movies`;
Saamme seuraavan tuloksen.
| Concat | vuosi_vapautettu |
|---|---|
| Pirates of the Caribean 4 (Rob Marshall) | 2011 |
| Sarah Marshalin unohtaminen (Nicholas Stoller) | 2008 |
| NULL | 2008 |
| Code Nimi Black (Edgar Jimz) | 2010 |
| NULL | 2007 |
| NULL | 2007 |
| NULL | 2007 |
| Honey mooners (John Schultz) | 2005 |
| NULL | 2012 |
Jรคsenlistauksen saaminen syntymรคvuoden nรคyttรคmiseksi
Oletetaan, ettรค haluamme listan kaikista jรคsenistรค, joissa nรคkyy jรคsennumero, koko nimi ja syntymรคvuosi. Voimme kรคyttรครค LEFT-merkkijonofunktiota saadaksesi tulokseksitract syntymรคvuosi syntymรคaikakentรคstรค.
SELECT `membership_number`,`full_names`,LEFT(`date_of_birth`,4) AS `year_of_birth` FROM members;
TรรLTร
- "LEFT(`syntymรคpรคivรค`,4)" Ishayoiden opettaman LEFT merkkijonofunktio hyvรคksyy syntymรคajan parametrina ja palauttaa vain neljรค merkkiรค vasemmalta.
- "AS `syntymรคvuosi" on sarakkeen aliaksen nimi palasi tuloksiimme. AS-avainsana on valinnainen; voit jรคttรครค sen pois ja kysely toimii silti.
Kyselyn suorittaminen kohdassa MySQL Workbenchin ja myflixdb:n vertailu antaa meille alla nรคkyvรคt tulokset.
| jรคsennumero | full_names | syntymรคvuosi |
|---|---|---|
| 1 | Janet Jones | 1980 |
| 2 | Janet Smith Jones | 1980 |
| 3 | Robert Phil | 1989 |
| 4 | Gloria Williams | 1984 |
Kรคsin kirjoitetut kyselyt ovat vain yksi reitti tulosjoukkoon. Workbench voi myรถs rakentaa lausekkeen puolestasi.
SQL:n kรคyttรถ MySQL Tyรถpรถytรค
Aiomme nyt kรคyttรครค MySQL Tyรถpรถytรค, jolla luodaan komentosarja, joka nรคyttรครค kaikki kategoriataulukon kenttien nimet.
1. Napsauta hiiren kakkospainikkeella Luokat-taulukkoa. Valitse โValitse rivit โ Rajoita 1000โ.
2. MySQL Workbench luo automaattisesti SQL-kyselyn ja liittรครค sen editoriin.
3. Kyselyn tulokset nรคkyvรคt editorin alapuolella olevassa ruudukossa.
Kuten kuvakaappaus osoittaa, emme kirjoittaneet SELECT-lauseketta itse. MySQL Workbench loi sen meille.
Miksi kรคyttรครค SELECT SQL -komentoa, kun meillรค on MySQL Tyรถpรถytรค?
Saatat miettiรค, miksi sinun pitรคisi opetella SQL SELECT -komento, kun tyรถkalu, kuten MySQL Workbench palauttaa samat tulokset ilman SQL-kielen tuntemusta. Tuo oikotie on mahdollinen, mutta SELECT-komennon oppiminen antaa sinulle enemmรคn joustavuus ja ohjaus yli sinun SQL SELECT -lauseet.
MySQL Tyรถpรถytรค kuuluu luokkaan โKysely esimerkin mukaanโ(QBE) -tyรถkalut. Sen tarkoituksena on luoda SQL-lauseita nopeammin ja lisรคtรค kรคyttรคjien tuottavuutta.
SQL SELECT -komennon oppiminen antaa sinulle mahdollisuuden luoda monimutkaiset kyselyt joita ei voida helposti luoda Query by Example -apuohjelmilla, kuten MySQL Tyรถpรถytรค.
Tuottavuuden parantamiseksi voit luo koodi sisรครคn MySQL Tyรถpรถytรค, sitten rรครคtรคlรถidรค se tรคyttรครค vaatimuksetSe on mahdollista vasta, kun ymmรคrrรคt, miten SQL-lausekkeet toimivat.



