0Pricing
Coding Interview Prep · Lezione

Proiezione delle colonne e insidie degli alias

Capire perché non è possibile fare riferimento a un alias di SELECT in WHERE e come viene verificato l'ambito degli alias

Proiezione delle colonne e insidie degli alias è una lezione Coding Interview Prep gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Coding Interview Prep, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Coding Interview Prep include 4 lezioni in totale.

Proiezione: scegliere le colonne

La scelta delle colonne restituite da una query si chiama proiezione: è ciò che fa ogni volta che scrive SELECT. Nel codice reale indichi esplicitamente le colonne; riservi SELECT * alle esplorazioni rapide.

SELECT id, first_name, email
FROM employees;

Perché gli intervistatori non apprezzano SELECT *

Perché gli intervistatori non apprezzano SELECT * nel codice delle applicazioni? È fragile (l'ordine delle colonne può cambiare), spreca larghezza di banda, ostacola l'uso degli indici e nasconde ciò che serve davvero. Indichi le colonne esplicitamente. 👍

Rinominare una colonna con AS

Un alias rinomina una colonna nell'output. Usi AS per maggiore chiarezza: è particolarmente utile per le colonne calcolate, perché trasforma espressioni poco leggibili come salary * 12 in un'intestazione chiara e comprensibile.

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

Racchiudere tra virgolette gli alias con spazi

Se un alias contiene spazi o una parola riservata, deve racchiuderlo tra virgolette. Il modo portabile e conforme allo standard consiste nell'usare le virgolette doppie. Suggerimento: preferisca nomi in snake_case ed eviti del tutto le virgolette.

SELECT salary AS "Annual Pay"
FROM employees;

Il grande tranello: l'ambito dell'alias in WHERE

Ecco il tranello più verificato: definire un alias in SELECT e poi usarlo per filtrare in WHERE porta a un errore. WHERE viene eseguito prima di SELECT, quindi quell'alias non esiste ancora.

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

Il motivo: ordine logico di esecuzione

La soluzione consiste nel conoscere il ordine logico delle clausole: FROM, WHERE, GROUP BY, HAVING, SELECT e infine ORDER BY. SELECT viene eseguita quasi alla fine, quindi le clausole precedenti non possono vedere i suoi alias.

Correzione 1: ripetere l'espressione

La correzione più portabile è semplice: basta ripetere l'espressione in WHERE invece di usare l'alias. È un po' più prolisso, ma funziona in ogni database, ogni volta.

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

Correzione 2: racchiudere in una sottoquery o in una CTE

Se ripetere una lunga espressione sembra poco elegante, la si calcoli prima in una sottoquery o CTE. In quel contesto l'alias diventa una vera colonna, quindi la WHERE esterna può filtrare in base a esso.

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

Dove gli alias SONO consentiti: ORDER BY

Una buona notizia: ORDER BY può usare un alias di SELECT, perché viene eseguita dopo SELECT. Quindi WHERE, GROUP BY e HAVING non possono vedere gli alias, ma ORDER BY sì.

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

Differenze tra dialetti da citare

Vale la pena citare un dettaglio: MySQL consente in modo permissivo gli alias in GROUP BY e HAVING, mentre Postgres e SQL Server rispettano lo standard. Ragioni in base all'ordine logico, poi segnali l'eccezione.

Alias di tabella e alias di colonna

Non li confonda. Un alias di tabella abbrevia il nome di una tabella ed è visibile ovunque, anche in WHERE. Un alias di colonna rinomina l'output e non lo è: è esattamente il contrario.

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

Verifica rapida

Verifichi il problema fondamentale.

Riepilogo

Riepilogo: preferisca le colonne esplicite a SELECT * e utilizzi gli alias con AS. Un alias di SELECT è invisibile in WHERE/GROUP BY/HAVING, ma funziona in ORDER BY. Per risolvere il problema, ripeta l'espressione oppure utilizzi una CTE.

Domande Frequenti

La lezione «Proiezione delle colonne e insidie degli alias» è gratuita?

Sì — il testo completo di «Proiezione delle colonne e insidie degli alias» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Coding Interview Prep, passa a CoddyKit PRO. Il corso Coding Interview Prep include 4 lezioni in totale.

Cosa imparerò in «Proiezione delle colonne e insidie degli alias»?

Capire perché non è possibile fare riferimento a un alias di SELECT in WHERE e come viene verificato l'ambito degli alias Eserciti Coding Interview Prep con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Coding Interview Prep?

Non è richiesta alcuna esperienza precedente. Coding Interview Prep su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.

Quanto tempo richiede la lezione «Proiezione delle colonne e insidie degli alias»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Coding Interview Prep?

Sì. Ogni lezione Coding Interview Prep include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Proiezione delle colonne e insidie degli alias
  2. Colonne calcolate e precedenza delle espressioni
  3. DISTINCT e GROUP BY per l'unicità
  4. Espressioni CASE in SELECT
← Torna a Coding Interview Prep