English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Alias di tabella e colonna SQL

In questo tutorial, imparerai come assegnare alias brevi a tabelle o colonne in una query SQL.

Definire alias di tabella

Quando più tabelle vengono unite in una singola query, è necessario aggiungere il nome della tabella prima di ogni nome di colonna, come employees.dept id, departments.dept id ecc., per evitare confusione e errori di colonna sfocata in cui le colonne hanno lo stesso nome in diverse tabelle. Tuttavia, se il nome della tabella è lungo e appare più volte nella query, scrivere la query diventa un compito difficile e fastidioso.

Pertanto, per risparmiare tempo e evitare di scrivere il nome completo della tabella, possiamo fornire un alias breve per ogni tabella e utilizzare questo alias nella query per riferirci alle colonne.

Per comprendere questo chiaramente, diamo un'occhiata a quanto segueemployeesEdepartmentsTabella.

+--------+--------------+------------+---------+
| emp_id | emp_name     | hire_date  | dept_id |
+--------+--------------+------------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |       4 |
|      2 | Tony Montana | 2002-07-15 |       1 |
|      3 | Sarah Connor | 2005-10-18 |       5 |
|      4 | Rick Deckard | 2007-01-03 |       3 |
|      5 | Martin Blank | 2008-06-24 |    NULL |
+--------+--------------+------------+---------+

+---------+------------------+
| dept_id | dept_name                                  |
+---------+------------------+
|                      1 | Administration              |
|                      2 | Customer Service              |
|                      3 | Finance                      |
|                      4 | Human Resources              |
|                      5 | Sales                      |
+---------+------------------+
Tabella: employees
Tabella: departments

Ecco una query che connette le tabelle degli impiegati e dei dipartimenti utilizzando il campo comune dept id per recuperare l'id, il nome e il nome del dipartimento degli impiegati.

SELECT employees.emp_id, employees.emp_name, departments.dept_name
FROM employees LEFT JOIN departments
ON employees.dept_id = departments.dept_id ORDER BY emp_id;

Questa è la versione compressa della query precedente che utilizza alias di tabella:

SELECT t1.emp_id, t1.emp_name, t2.dept_name
FROM employees AS t1 LEFT JOIN departments AS t2
ON t1.dept_id = t2.dept_id ORDER BY emp_id;

Se esegue una di queste istruzioni, si ottiene lo stesso output, come mostrato di seguito:

+--------+-----------------+--------------------+
| emp_id | emp_name                                  | dept_name                                          |
+--------+-----------------+--------------------+
|                                          1 | Ethan Hunt                                  | Human Resources                                  |
|                                          2 | Tony Montana                                  | Administration                                  |
|                                          3 | Sarah Connor                                  | Sales                                          |
|                                          4 | Rick Deckard                                  | Finance                                          |
|      5 | Martin Blank    | NULL               |
+--------+-----------------+--------------------+

Come vedete, l'uso degli alias delle tabelle può risparmiare molte battute di tastiera.

Vedere “ JOIN SQLSezione, per ulteriori informazioni sulla join delle tabelle.

Definire alias per le colonne della tabella

In MySQL, quando utilizzate funzioni SQL per generare output personalizzato, il nome delle colonne di output potrebbe essere difficile da comprendere. In questo caso, potete utilizzare alias per denominare temporaneamente le colonne di output.

Considerate la seguente query, nella quale utilizziamo un'espressione per formattare la colonna hire_date per generare un output personalizzato:

-- Sintassi del database MySQL 
SELECT emp_name, DATE_FORMAT(hire_date, '%M %e, %Y') FROM employees;

Se eseguite l'istruzione sopra, otterrete l'output seguente:

+--------------+-------------------------------------+
| emp_name     | DATE_FORMAT(hire_date, '%M %e, %Y') |
+--------------+-------------------------------------+
| Ethan Hunt   | May 1, 2001                       |
| Tony Montana | July 15, 2002                     |
| Sarah Connor | October 18, 2005                  |
| Rick Deckard | January 3, 2007                   |
| Martin Blank | June 24, 2008                       |
+--------------+-------------------------------------+

Come vedete, l'ultima colonna dell'output è lunga e ingombrante. Possiamo risolvere questo problema utilizzando alias di colonna, come segue:

-- Sintassi del database MySQL 
SELECT emp_name, DATE_FORMAT(hire_date, '%M %e, %Y') AS hire_date
FROM employees;

Se eseguite l'istruzione sopra, otterrete un output più leggibile come segue:

+--------------+------------------+
| emp_name     | hire_date        |
+--------------+------------------+
| Ethan Hunt   | May 1, 2001      |
| Tony Montana | July 15, 2002    |
| Sarah Connor | October 18, 2005 |
| Rick Deckard | January 3, 2007  |
| Martin Blank | June 24, 2008    |
+--------------+------------------+

注意:您可以在GROUP BYORDER BYHAVING在子句中使用别名来引用列。但是,不允许在WHERE在子句中使用别名。