Sarakkeiden projisointi ja aliasten sudenkuopat
Miksi SELECT-aliakseen ei voi viitata WHERE-lausekkeessa ja miten haastattelijat testaavat aliasten näkyvyysaluetta
Sarakkeiden projisointi ja aliasten sudenkuopat on ilmainen Valmistautuminen ohjelmointihaastatteluihin-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Valmistautuminen ohjelmointihaastatteluihin-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Valmistautuminen ohjelmointihaastatteluihin-kurssilla on yhteensä 4 oppituntia.
Projektio: sarakkeiden valitseminen
Niiden sarakkeiden valitsemista, jotka kysely palauttaa, kutsutaan projektioksi – juuri sitä teette aina kirjoittaessanne SELECT-lauseen. Nimetkää sarakkeet oikeassa koodissa täsmällisesti ja säästäkää SELECT * nopeaan tutkimiseen.
SELECT id, first_name, email
FROM employees;Miksi haastattelijat eivät pidä SELECT * -merkinnästä
Miksi haastattelijat eivät pidä SELECT * -merkinnästä sovelluskoodissa? Se on hauras (sarakkeiden järjestys voi muuttua), tuhlaa siirtokaistaa, heikentää indeksien hyödyntämistä ja peittää sen, mitä oikeasti tarvitsette. Nimetkää sarakkeet. 👍
Sarakkeen aliaksen määrittäminen AS-avainsanalla
Alias nimeää tuloksen sarakkeen uudelleen. Käyttäkää AS-avainsanaa selkeyden vuoksi – se on erityisen hyödyllinen lasketuissa sarakkeissa, sillä se antaa esimerkiksi ilmaukselle salary * 12 selkeän ja helposti luettavan otsikon.
SELECT first_name AS name,
salary * 12 AS annual_salary
FROM employees;Välilyöntejä sisältävien aliasten lainaaminen
Jos alias sisältää välilyöntejä tai varatun sanan, se täytyy lainata. Siirrettävin ja standardin mukainen tapa on käyttää kaksoislainausmerkkejä. Vinkki: käyttäkää snake_case-nimiä, jolloin lainausmerkit voi jättää kokonaan pois.
SELECT salary AS "Annual Pay"
FROM employees;Suurin kompastuskivi: aliaksen näkyvyysalue WHERE-lauseessa
Tässä on useimmin testattu kompastuskivi: määritätte aliaksen SELECT-lauseessa ja suodatatte sen perusteella WHERE-lauseessa, jolloin kysely epäonnistuu. WHERE suoritetaan ennen SELECT-lauseketta, joten alias ei ole vielä olemassa.
-- This raises an error
SELECT salary * 12 AS annual_salary
FROM employees
WHERE annual_salary > 100000;Syy: looginen suoritusjärjestys
Ratkaisu on tuntea lausekkeiden looginen suoritusjärjestys: FROM, WHERE, GROUP BY, HAVING, SELECT ja lopuksi ORDER BY. SELECT käsitellään vasta lähellä loppua, joten aiemmat lausekkeet eivät voi käyttää sen aliaksia.
Korjaus 1: Toista lauseke
Siirrettävin korjaus on yksinkertainen: toistakaa lauseke WHERE-lausekkeessa aliaksen sijaan. Koodi on hieman toisteista, mutta se toimii kaikissa tietokannoissa joka kerta.
SELECT salary * 12 AS annual_salary
FROM employees
WHERE salary * 12 > 100000;Korjaus 2: Käytä alikyselyä tai CTE:tä
Jos pitkän lausekkeen toistaminen tuntuu kömpelöltä, laskekaa se ensin alikyselyssä tai CTE:ssä. Siellä aliaksesta tulee oikea sarake, joten ulompi WHERE voi suodattaa sen perusteella.
SELECT *
FROM (
SELECT first_name, salary * 12 AS annual_salary
FROM employees
) t
WHERE annual_salary > 100000;Missä aliaksia SAA käyttää: ORDER BY
Hyvä uutinen: ORDER BY voi käyttää SELECT-aliasta, koska se suoritetaan SELECT-lausekkeen jälkeen. WHERE, GROUP BY ja HAVING eivät siis näe aliaksia — mutta ORDER BY näkee.
SELECT first_name, salary * 12 AS annual_salary
FROM employees
ORDER BY annual_salary DESC;Mainitsemisen arvoiset murre-erot
Mainitsemisen arvoinen ero: MySQL sallii aliasnimet melko vapaasti GROUP BY- ja HAVING-lausekkeissa, kun taas Postgres ja SQL Server noudattavat standardia. Päätelkää asia loogisen järjestyksen perusteella ja mainitkaa sitten poikkeus.
Taulukkoaliakset ja sarakealiakset
Älkää sekoittako niitä keskenään. Taulukkoalias lyhentää taulukon nimeä ja on käytettävissä kaikkialla, myös WHERE-lausekkeessa. Sarakealias nimeää tulossarakkeen uudelleen, mutta ei ole käytettävissä kaikkialla — siis täsmälleen päinvastoin.
SELECT e.first_name, e.salary AS pay
FROM employees AS e
WHERE e.salary > 50000;Pikatarkistus
Testatkaa keskeinen sudenkuoppa.
Kertaus
Kertaus: suosikaa eksplisiittisiä sarakkeita SELECT * -lausekkeen sijaan ja käyttäkää aliaksille AS-sanaa. SELECT-alias ei ole käytettävissä WHERE-, GROUP BY- eikä HAVING-lausekkeissa, mutta toimii ORDER BY-lausekkeessa. Korjatkaa ongelma toistamalla lauseke tai käyttämällä CTE:tä.
Opi Valmistautuminen ohjelmointihaastatteluihin tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 90
- Oppitunnit
- 360
Usein kysytyt kysymykset
Onko oppitunti ”Sarakkeiden projisointi ja aliasten sudenkuopat” ilmainen?
Kyllä – oppitunnin ”Sarakkeiden projisointi ja aliasten sudenkuopat” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Valmistautuminen ohjelmointihaastatteluihin-kurssin, päivitä CoddyKit PROhon. Valmistautuminen ohjelmointihaastatteluihin-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Sarakkeiden projisointi ja aliasten sudenkuopat”?
Miksi SELECT-aliakseen ei voi viitata WHERE-lausekkeessa ja miten haastattelijat testaavat aliasten näkyvyysaluetta Harjoittelet Valmistautuminen ohjelmointihaastatteluihin-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Valmistautuminen ohjelmointihaastatteluihin-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Valmistautuminen ohjelmointihaastatteluihin-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Sarakkeiden projisointi ja aliasten sudenkuopat”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Valmistautuminen ohjelmointihaastatteluihin-oppitunnilla?
Kyllä. Jokainen Valmistautuminen ohjelmointihaastatteluihin-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Sarakkeiden projisointi ja aliasten sudenkuopat
- Lasketut sarakkeet ja lausekkeiden prioriteetti
- DISTINCT vai GROUP BY yksikäsitteisyyden saavuttamiseksi
- CASE-lausekkeet SELECTissä