Forberedelse til SQL-interview · Lektion

Projektion af kolonner og faldgruber ved aliaser

Hvorfor De ikke kan referere til et SELECT-alias i WHERE, og hvordan interviewere tester aliasets scope

Lektion 1 af 413 trin

Projektion af kolonner og faldgruber ved aliaser er en gratis Forberedelse til SQL-interview-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Forberedelse til SQL-interview, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Forberedelse til SQL-interview-kurset indeholder 4 lektioner i alt.

Projektion: Vælg dine kolonner

Det kaldes projektion at vælge, hvilke kolonner en forespørgsel returnerer — det er det, du gør, hver gang du skriver SELECT. Angiv kolonnerne eksplicit i rigtig kode, og gem SELECT * til hurtig udforskning.

SELECT id, first_name, email
FROM employees;

Hvorfor interviewere ikke bryder sig om SELECT *

Hvorfor bryder interviewere sig ikke om SELECT * i programkode? Det er skrøbeligt (kolonnernes rækkefølge kan ændre sig), spilder båndbredde, forringer brugen af indeks og skjuler, hvad du faktisk har brug for. Angiv dine kolonner. 👍

Giv en kolonne et alias med AS

Et alias omdøber en kolonne i dit resultat. Brug AS for tydelighed — det er især nyttigt til beregnede kolonner, fordi det giver rodede udtryk som salary * 12 en ren og læsbar overskrift.

SELECT first_name AS name,
       salary * 12 AS annual_salary
FROM employees;

Anførselstegn omkring aliaser med mellemrum

Hvis et alias indeholder mellemrum eller et reserveret ord, skal du sætte anførselstegn omkring det. Den standardiserede måde, der virker på tværs af systemer, er dobbelte anførselstegn. Tip: Brug bare navne i snake_case, så du helt kan undgå anførselstegn.

SELECT salary AS "Annual Pay"
FROM employees;

Den store faldgrube: Aliasets gyldighedsområde i WHERE

Her er den faldgrube, der oftest testes: Definér et alias i SELECT, og filtrér derefter efter det i WHERE; så fejler det. WHERE køres før SELECT, så aliaset findes ikke endnu.

-- This raises an error
SELECT salary * 12 AS annual_salary
FROM employees
WHERE annual_salary > 100000;

Årsagen: Logisk udførelsesrækkefølge

Løsningen er at kende den logiske rækkefølge for klausuler: FROM, WHERE, GROUP BY, HAVING, SELECT og derefter ORDER BY. SELECT kommer næsten til sidst, så tidligere klausuler kan ikke se dens aliaser.

Løsning 1: Gentag udtrykket

Den mest portable løsning er enkel: Du skal bare gentage udtrykket i WHERE i stedet for aliaset. Det bliver lidt mere omstændeligt, men det virker i alle databaser, hver gang.

SELECT salary * 12 AS annual_salary
FROM employees
WHERE salary * 12 > 100000;

Løsning 2: Pak det ind i en underforespørgsel eller CTE

Hvis det virker grimt at gentage et langt udtryk, kan du først beregne det i en underforespørgsel eller CTE. Der bliver aliaset til en rigtig kolonne, så den ydre WHERE kan filtrere efter det.

SELECT *
FROM (
  SELECT first_name, salary * 12 AS annual_salary
  FROM employees
) t
WHERE annual_salary > 100000;

Hvor aliaser er tilladt: ORDER BY

Gode nyheder: ORDER BY kan bruge et SELECT-alias, fordi den udføres efter SELECT. Så WHERE, GROUP BY og HAVING kan ikke se aliaser — men det kan ORDER BY.

SELECT first_name, salary * 12 AS annual_salary
FROM employees
ORDER BY annual_salary DESC;

Dialektforskelle, der er værd at nævne

Det er værd at nævne: MySQL tillader i praksis aliaser i GROUP BY og HAVING, mens Postgres og SQL Server følger standarden. Ræsonnér ud fra den logiske rækkefølge, og nævn derefter undtagelsen.

Tabelaliaser kontra kolonnealiaser

Du må ikke blande dem sammen. Et tabelalias forkorter et tabelnavn og er synligt overalt, også i WHERE. Et kolonnealias omdøber resultatet og er ikke synligt — præcis det modsatte.

SELECT e.first_name, e.salary AS pay
FROM employees AS e
WHERE e.salary > 50000;

Hurtigt tjek

Afprøv den centrale faldgrube.

Opsummering

Opsummering: Foretræk eksplicitte kolonner frem for SELECT *, og brug AS til aliaser. Et SELECT-alias er usynligt i WHERE/GROUP BY/HAVING, men virker i ORDER BY. Løs problemet ved at gentage udtrykket eller bruge en CTE.

Gratis at komme i gang

Lær SQL med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Projektion af kolonner og faldgruber ved aliaser” gratis?

Ja — hele teksten til “Projektion af kolonner og faldgruber ved aliaser” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Forberedelse til SQL-interview-kurset, skal du opgradere til CoddyKit PRO. Forberedelse til SQL-interview-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Projektion af kolonner og faldgruber ved aliaser”?

Hvorfor De ikke kan referere til et SELECT-alias i WHERE, og hvordan interviewere tester aliasets scope Du øver dig i Forberedelse til SQL-interview med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Forberedelse til SQL-interview?

Der kræves ingen tidligere erfaring. Forberedelse til SQL-interview på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Projektion af kolonner og faldgruber ved aliaser”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Forberedelse til SQL-interview-lektion?

Ja. Alle Forberedelse til SQL-interview-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Projektion af kolonner og faldgruber ved aliaser
  2. Beregnede kolonner og operatorpræcedens
  3. DISTINCT kontra GROUP BY for entydighed
  4. CASE-udtryk i SELECT
← Tilbage til Forberedelse til SQL-interview