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: