Valmistautuminen ohjelmointihaastatteluihin · Oppitunti

Sarakkeiden projisointi ja aliasten sudenkuopat

Miksi SELECT-aliakseen ei voi viitata WHERE-lausekkeessa ja miten haastattelijat testaavat aliasten näkyvyysaluetta

Oppitunti 1/413 vaihetta

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

Aloita maksutta

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

  1. Sarakkeiden projisointi ja aliasten sudenkuopat
  2. Lasketut sarakkeet ja lausekkeiden prioriteetti
  3. DISTINCT vai GROUP BY yksikäsitteisyyden saavuttamiseksi
  4. CASE-lausekkeet SELECTissä
← Takaisin: Valmistautuminen ohjelmointihaastatteluihin