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.

  • ๐Ÿ”Ž Ydintarkoitus: SELECT hakee tallennetut rivit, jotka vastaavat ehtoja, komentokehotteesta tai PHP:stรค. Python, ja muilla kielillรค.
  • ๐Ÿงฉ Syntaksijรคrjestys: SELECT-, FROM-, WHERE-, GROUP BY-, HAVING- ja ORDER BY -kรคskyjen on oltava kyseisessรค kiinteรคssรค jรคrjestyksessรค.
  • โญ Tรคhtien pikanรคppรคin: SELECT * FROM `members`; palauttaa kaikki sarakkeet, kun taas sarakkeiden nimeรคminen erikseen pitรครค tulosjoukot pienempinรค ja nopeampina.
  • ๐Ÿ”— Ilmaisut: Concat() yhdistรครค sarakearvot ja LEFT() karsii merkkejรค, joten lasketut kentรคt nรคkyvรคt suoraan tulosjoukossa.
  • ๐Ÿท๏ธ Sarakkeen aliakset: Valinnainen AS-avainsana nimeรครค minkรค tahansa lausekkeen uudelleen korvaamalla lukukelvottomat otsikot, kuten Concat(`title`), selkeillรค otsikoilla.
  • ๐Ÿ–ฑ๏ธ Tyรถpรถydรคn vertailu: MySQL Workbench luo kyselyitรค visuaalisesti, mutta kรคsin kirjoitetut SELECT-lausekkeet ovat edelleen vรคlttรคmรคttรถmiรค monimutkaiselle ja tarkalle haulle.

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.

VALITSE kysely sisรครคn MySQL

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

SQL:n kรคyttรถ MySQL Tyรถpรถytรค

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.

Ymmรคrtรคminen MySQL SELECT-lause

UKK

Yleensรค kyllรค. SELECT * lukee jokaisen sarakkeen, mukaan lukien suuret teksti- ja blob-kentรคt, joita et ehkรค tarvitse, ja se estรครค indeksien peittรคmisen. Sarakkeiden nimeรคminen pitรครค tulosjoukon pienempรคnรค ja kyselyn nopeampana.

Avainsanat, kuten SELECT ja FROM, eivรคt ole kirjainkokoriippuvaisia. Merkkijonojen vertailut seuraavat sarakkeen lajittelua, joten kirjainkokoa ei erotella lajittelussa, kuten utf8mb4_0900_ai_ci, kรคsitellรครคn "Janet":ia ja "janet":ia tasavertaisina.

Puuttuva indeksi on tavallisin syy. Suorita EXPLAIN ennen kyselyรค nรคhdรคksesi, MySQL suorittaa koko taulukon skannauksen, indeksoi sitten suodatetut tai yhdistetyt sarakkeet ja palauttaa vain tarvitsemasi rivit.

Kyllรค. Text-to-SQL-avustajat muuntavat tavallisen pyynnรถn SELECT-lausekkeeksi, kun ne tuntevat skeemasi. RevTarkastele luotuja liitoksia ja suodattimia, koska tekoรคlymalli voi keksiรค sarakenimiรค, joita ei ole olemassa.

Ei. Tekoรคly luonnostelee kyselyn nopeasti, mutta sinรค silti tarkistat logiikan, liitokset ja suorituskyvyn. MySQL TyรถpรถytรคSELECT-metodin tunteminen auttaa sinua havaitsemaan vรครคrรคn tuloksen ennen kuin se pรครคsee tuotantoon.

Tiivistรค tรคmรค viesti seuraavasti: