Förberedelser inför SQL-intervjun · Lektion

Projicera kolumner och fallgropar med alias

Varför du inte kan referera till ett SELECT-alias i WHERE och hur intervjuare testar aliasets räckvidd

Lektion 1 av 413 steg

Projicera kolumner och fallgropar med alias är en gratis lektion i Förberedelser inför SQL-intervjun på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Förberedelser inför SQL-intervjun, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Förberedelser inför SQL-intervjun innehåller totalt 4 lektioner.

Projektion: Välja kolumner

Att välja vilka kolumner en fråga returnerar kallas projektion — det är vad du gör varje gång du skriver SELECT. Ange kolumnerna uttryckligen i riktig kod och spara SELECT * för snabb utforskning.

SELECT id, first_name, email
FROM employees;

Varför intervjuare ogillar SELECT *

Varför ogillar intervjuare SELECT * i applikationskod? Det är skört (kolumnordningen kan ändras), slösar bandbredd, försämrar indexanvändningen och döljer vad du faktiskt behöver. Ange kolumnerna. 👍

Alias för en kolumn med AS

Ett alias döper om en kolumn i resultatet. Använd AS för tydlighet — det är särskilt användbart för beräknade kolumner, eftersom det ger röriga uttryck som salary * 12 en ren och lättläst rubrik.

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

Alias med blanksteg inom citattecken

Om ett alias innehåller blanksteg eller är ett reserverat ord måste du omge det med citattecken. Det portabla standardsättet är dubbla citattecken. Tips: håll dig till snake_case-namn så slipper du citattecken helt.

SELECT salary AS "Annual Pay"
FROM employees;

Den stora fallgropen: Aliasets räckvidd i WHERE

Här är den mest testade fallgropen: definiera ett alias i SELECT och filtrera sedan på det i WHERE, så fungerar det inte. WHERE körs före SELECT, så aliaset existerar inte ännu.

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

Anledningen: logisk körordning

Lösningen är att känna till den logiska ordningen för klausulerna: FROM, WHERE, GROUP BY, HAVING, SELECT och sedan ORDER BY. SELECT körs nära slutet, så tidigare klausuler kan inte se dess alias.

Lösning 1: Upprepa uttrycket

Den mest portabla lösningen är enkel: upprepa uttrycket i WHERE i stället för aliaset. Det blir lite mer omständligt, men fungerar i alla databaser, varje gång.

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

Lösning 2: Använd en underfråga eller CTE

Om det känns klumpigt att upprepa ett långt uttryck kan det först beräknas i en underfråga eller CTE. Där blir aliaset en riktig kolumn, så den yttre WHERE kan filtrera på det.

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

Där alias faktiskt får användas: ORDER BY

Goda nyheter: ORDER BY kan använda ett alias från SELECT, eftersom ORDER BY körs efter SELECT. WHERE, GROUP BY och HAVING kan alltså inte se alias – men ORDER BY kan.

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

Dialektskillnader värda att nämna

En skillnad som är värd att nämna: MySQL tillåter ganska generöst alias i GROUP BY och HAVING, medan Postgres och SQL Server följer standarden. Utgå från den logiska ordningen och nämn sedan undantaget.

Tabellalias jämfört med kolumnalias

Blanda inte ihop dem. Ett tabellalias förkortar ett tabellnamn och är synligt överallt, även i WHERE. Ett kolumnalias byter namn på resultatet och är inte synligt där – precis tvärtom.

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

Snabb kontroll

Testa den centrala fallgropen.

Sammanfattning

Sammanfattning: föredra explicita kolumner framför SELECT * och använd AS för alias. Ett SELECT-alias är osynligt i WHERE/GROUP BY/HAVING men fungerar i ORDER BY. Lös problemet genom att upprepa uttrycket eller använda en CTE.

Gratis att börja

Lär dig SQL med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Projicera kolumner och fallgropar med alias” gratis?

Ja – hela texten till ”Projicera kolumner och fallgropar med alias” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Förberedelser inför SQL-intervjun, kan Ni uppgradera till CoddyKit PRO. Kursen i Förberedelser inför SQL-intervjun innehåller totalt 4 lektioner.

Vad lär jag mig i ”Projicera kolumner och fallgropar med alias”?

Varför du inte kan referera till ett SELECT-alias i WHERE och hur intervjuare testar aliasets räckvidd Ni övar på Förberedelser inför SQL-intervjun med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Förberedelser inför SQL-intervjun?

Du behöver inga förkunskaper. Utbildningen i Förberedelser inför SQL-intervjun på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Projicera kolumner och fallgropar med alias”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Förberedelser inför SQL-intervjun-lektionen?

Ja. Varje Förberedelser inför SQL-intervjun-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Projicera kolumner och fallgropar med alias
  2. Beräknade kolumner och uttryckens prioritet
  3. DISTINCT kontra GROUP BY för unikhet
  4. CASE-uttryck i SELECT
← Tillbaka till Förberedelser inför SQL-intervjun