Torna all'elenco degli articoli Articoli
Tempo di lettura: 7 minuti

Come utilizzare gli alias nelle query SQL

Un alias SQL è utile per semplificare le query e rendere più leggibile la query e il suo risultato. Questo articolo spiega perché e come utilizzare gli alias nelle query SQL.

È possibile rinominare temporaneamente una tabella o una colonna assegnandole un altro nome. Si tratta di un alias SQL. Si tratta di una modifica temporanea che non influisce sul nome effettivo della tabella nel database. Il nome temporaneo di una tabella può anche essere chiamato nome di correlazione.

Gli alias sono una funzione di SQL supportata dalla maggior parte, se non da tutti, i sistemi di gestione dei database relazionali. Se siete alle prime armi con SQL, prendete in considerazione il nostro corso SQL Basics , che tratta anche l'argomento degli alias.

Perché usare un alias in SQL?

Ci sono diversi motivi per cui si potrebbe prendere in considerazione l'uso di un alias in SQL:

  • I nomi complessi delle colonne e delle tabelle possono essere semplificati o ricevere un nome più adatto. Questo rende la query SQL più chiara e comprensibile.
  • Gli alias sono utili quando si lavora con le operazioni JOIN o con funzioni aggregate come COUNT() e SUM().
  • Un alias SQL è utile anche quando si utilizza un self-join.
  • Quando si lavora con più tabelle, è buona norma anteporre a tutti i nomi delle colonne un alias, in modo da poter vedere facilmente quale colonna appartiene a quale tabella.

Gli alias sono solo uno dei termini che gli utenti di SQL dovrebbero conoscere. Altri termini SQL importanti sono descritti in dettaglio in questo articolo, Termini SQL che i principianti dovrebbero conoscere.

Vediamo ora nel dettaglio l'uso degli alias, a partire dalle colonne.

Rinominare le colonne con gli alias

Un alias può essere utilizzato per rinominare le colonne nella query SQL. La sintassi è la seguente:

SELECT 
  column_1 AS alias_1, 
  column_2 AS alias_2, 
  …
FROM table_name;

Applichiamo tutto questo a un esempio pratico. Utilizzeremo la seguente tabella, che contiene le informazioni di base del nostro database customers:

customer_idcustomer_nameage
1Daniel Case23
2Josh Beverly47
3Bruce Roman51
4William Stewart62

Per prima cosa, useremo una query che non ha alias per i nomi delle colonne. Immaginiamo di voler vedere quali clienti hanno meno di 60 anni. Potremmo scrivere la seguente query:

SELECT
  customer_id,
  customer_name, 
  age 
FROM customers 
WHERE age < 60

L'esecuzione di questa query restituirà questo insieme di risultati:

customer_idcustomer_nameage
1Daniel Case23
2Josh Beverly47
3Bruce Roman51

Ora introduciamo gli alias delle colonne. La query seguente contiene ora un alias per due colonne:

SELECT
  customer_id AS id,
  customer_name AS name, 
  age 
FROM customers 
WHERE age < 60
idnameage
1Daniel Case23
2Josh Beverly47
3Bruce Roman51

Confrontatela con il risultato dell'esempio precedente. Prestate particolare attenzione ai nomi delle colonne e noterete l'impatto dei nostri alias. La colonna customer_id appare ora come id. La colonna customer_name viene visualizzata come nome. La colonna età rimane invariata. Questo è il risultato desiderato!

Si noti che la parola chiave AS è del tutto facoltativa quando si utilizzano gli alias. Ad esempio, queste due query SQL svolgono la stessa funzione:

SELECT 
  customer_id AS id, 
  customer_name AS name, 
  age 
FROM customers 
WHERE age < 60

SELECT 
  customer_id id, 
  customer_name name, 
  age 
FROM customers 
WHERE age < 60

Se l'alias utilizzato contiene spazi, è necessario mettere le virgolette intorno all'alias. Ad esempio:

SELECT customer_name AS 'Customer Name'
FROM customers

Questo conclude l'uso di un alias SQL per rinominare le colonne. Il prossimo passo sarà l'utilizzo di un alias per rinominare le tabelle!

Rinominare le tabelle con gli alias SQL

Un alias può essere utilizzato per rinominare le tabelle utilizzate nella query SQL. La sintassi degli alias di tabella è la seguente:

SELECT 
  column_1, 
  column_2, 
  …
FROM table_name AS alias_name;

Applichiamo questa sintassi a un esempio. Utilizzeremo la stessa tabella:

clienti

SELECT 
  customer_name, 
  age 
FROM customers AS c 
WHERE c.age < 60

L'esecuzione di questa query restituisce i seguenti dati:

customer_nameage
Daniel Case23
Josh Beverly47
Bruce Roman51

Se si usa il nome di una tabella prima del nome di una colonna nella clausola WHERE, non si può usare il nome originale della tabella, ma l'alias della tabella. Inoltre, quando si desidera specificare la tabella nell'elenco SELECT, è necessario utilizzare l'alias (ad esempio, c.customer_name). Ancora una volta, la parola chiave AS è del tutto facoltativa. La query funzionerà allo stesso modo anche senza di essa.

Uso di un alias con un self-join

Una self-join consente di unire una tabella a se stessa. È utile quando si interrogano dati gerarchici o si confrontano righe all'interno della stessa tabella. In sostanza, si tratta la tabella come due (o più) tabelle separate assegnando degli alias. Se non avete familiarità con le self-join, consultate questo articolo con sette esempi di tabelle self-join in SQL.

Quando si fa un'autogiunzione di una tabella, si può usare un LEFT JOIN o un INNER JOIN. Quando si usa un'autogiunzione, è importante usare un alias logico SQL per ogni tabella. (Gli alias sono utili anche per le subquery. Un esempio è riportato in questo articolo che spiega in modo esauriente le subquery).

Vediamo come scrivere una query che JOIN una tabella a se stessa. Per il nostro esempio, utilizzeremo la tabella employeeche mostra tutti i nostri dipendenti, gli ID dei loro reparti e gli ID dei loro manager.

idemployee_namedepartment_idmanager_id
1John Walker4NULL
2Bob Pendergast11
3Penelope Cruz21
4Lucy Summers51
5Tim Saunter31
6Mary Smith23

Supponiamo di voler ottenere un set di risultati che mostri solo un dipendente e il suo manager. Come possiamo ottenere questo risultato? È possibile farlo facilmente grazie all'uso intelligente degli alias in combinazione con un self-join. Per prima cosa proveremo a usare un alias LEFT JOIN. Guardate lo snippet di codice qui sotto:

SELECT 
  e.employee_name AS 'Employee',
  m.employee_name AS 'Manager'
FROM employee e
LEFT JOIN employee m
  ON m.id = e.manager_id

Quando si uniscono le tabelle, ci si assicura che il valore della colonna id della tabella dei manager (employee m) sia uguale al valore della colonna manager_id della tabella dei dipendenti (employee e). Utilizzando LEFT JOIN invece di JOIN, vedremo tutti i dipendenti, anche quelli che non hanno un manager.

Attenzione all'errore di colonna ambigua, che può verificarsi facilmente se non si fa attenzione quando si scrive una query self-join. Per evitare questo errore, è necessario specificare esplicitamente la tabella a cui appartiene la colonna (employee si è dato un nome e oppure employee hai nominato m). In questo esempio, la prima colonna proviene dalla tabella e (quindi e.employee_name) e la seconda colonna proviene dalla tabella m (quindi m.employee_name).

L'esecuzione della query precedente produce il seguente insieme di risultati:

EmployeeManager
John WalkerNULL
Bob PendergastJohn Walker
Penelope CruzJohn Walker
Lucy SummersJohn Walker
Tim SaunterJohn Walker
Mary SmithPenelope Cruz

Ecco il risultato desiderato! È possibile vedere chiaramente ogni dipendente e il suo manager. La maggior parte dei dipendenti fa capo a John Walker. Tuttavia, si può notare che il manager di Mary Smith è Penelope Cruz. Si noti il valore NULL sotto la colonna Manager per John Walker. Questo perché John Walker non ha un manager; è il capo. Siamo riusciti a includerlo nei risultati perché abbiamo usato LEFT JOIN.

Modifichiamo leggermente la query e utilizziamo un valore INNER JOIN:

SELECT
  e.employee_name AS 'Employee',
  m.employee_name AS 'Manager'
FROM employee e
INNER JOIN employee m
  ON m.id = e.manager_id
EmployeeManager
Bob PendergastJohn Walker
Penelope CruzJohn Walker
Lucy SummersJohn Walker
Tim SaunterJohn Walker
Mary SmithPenelope Cruz

L'unica differenza sostanziale è l'assenza di John Walker dalla colonna Employee. Questo perché il valore manager_id per lui era NULL, e INNER JOIN restituisce solo colonne corrispondenti - i valori NULL non sono inclusi.

Ora è possibile eseguire auto-giunzioni, che possono essere applicate a molti casi d'uso diversi. Se avete bisogno di vedere altri esempi di self-join per comprendere appieno l'argomento, date un'occhiata a questo post su come unire due volte la stessa tabella!

Scrivere meglio le query SQL usando gli alias

In questo articolo abbiamo dimostrato il valore degli alias SQL. Questi aiutano a visualizzare dati più chiari e hanno il vantaggio di nascondere nomi di tabelle o colonne potenzialmente sensibili. Se vi è piaciuto questo articolo e volete continuare a imparare l'SQL, prendete in considerazione la nostra traccia di apprendimento SQL Fundamentals . Vi insegnerà le istruzioni SQL di base come WHERE, GROUP BY, ORDER BY e HAVING. Imparerete anche come JOIN tabelle e come aggiungere, modificare o rimuovere dati da un database.