English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, imparerai come assegnare alias brevi a tabelle o colonne in una query SQL.
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.
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 | +--------------+------------------+