MySQL别名
简介:在本教程中,您将学习如何使用MySQL别名来提高查询的可读性。
MySQL支持两种别名,分别称为列别名和表别名。
列的MySQL别名
有时,列名是如此专业,以致于查询的输出很难理解。
要给列起一个描述性名称,可以使用列别名。
以下语句说明了如何使用列别名:
SELECT [column_1 | expression] AS descriptive_name FROM table_name;
要将别名分配给列,请使用AS关键字,后跟别名。
如果别名包含空格,则必须将其引用为以下内容:
SELECT [column_1 | expression] AS `descriptive name` FROM table_name;
由于AS关键字是可选的,因此可以在语句中省略它。
请注意,您还可以为表达式指定别名。
让我们看一下示例数据库中的employee表。
以下查询选择员工的名字和姓氏。
它使用CONCAT_WS()函数将名字和姓氏连接为全名。
SELECT CONCAT_WS(', ', lastName, firstname) FROM employees;
列标题很难阅读。
为了解决这个问题,您可以为输出的列标题分配一个列别名,如以下查询所示:
SELECT CONCAT_WS(', ', lastName, firstname) AS `Full name` FROM employees;
在MySQL中,您可以使用ORDER BY,GROUP BY和HAVING子句中的列别名来引用该列。
以下查询使用ORDER BY子句中的列别名按字母顺序对员工的全名进行排序:
SELECT CONCAT_WS(', ', lastName, firstname) `Full name` FROM employees ORDER BY `Full name`;
以下语句选择总金额大于60000的订单。
它在GROUP BY和HAVING子句中使用列别名。
SELECT orderNumber `Order no.`, SUM(priceEach * quantityOrdered) total FROM orderDetails GROUP BY `Order no.` HAVING total > 60000;
请注意,您不能在WHERE子句中使用列别名。
原因是,当MySQL评估WHERE子句时,尚未评估SELECT子句中指定的列的值。
表的MySQL别名
您可以使用别名为表指定其他名称。
通过使用以下语法AS关键字为表分配别名:
table_name AS table_alias
表的别名称为表别名。
与列别名一样,AS关键字是可选的,因此您可以省略它。
此查询显示如何将employee表别名分配为e:
SELECT * FROM employees e;
为表分配别名后,您可以使用以下语法引用表列:
table_alias.column_name
例如:
SELECT e.firstName, e.lastName FROM employees e ORDER BY e.firstName;
表别名通常用于包含INNER JOIN,LEFT JOIN,RIGHT JOIN子句的语句以及子查询中。
让我们看一下客户和订单表:
这两个表具有相同的列名称:customerNumber。
如果不使用表别名来限定customerNumber列,则将收到以下错误消息:
Error Code: 1052. Column 'customerNumber' in on clause is ambiguous
为避免此错误,您可以使用表别名来限定customerNumber列:
SELECT customerName, COUNT(o.orderNumber) total FROM customers c INNER JOIN orders o ON c.customerNumber = o.customerNumber GROUP BY customerName ORDER BY total DESC;
上面的查询从客户和订单表中选择客户名称和订单数量。
它使用c作为customers表的表别名,并使用o作为orders表的表别名。
客户和订单表中的列通过表别名引用。
如果您在上面的查询中未使用别名,则必须使用表名来引用其列,这会使查询冗长且可读性降低,如下所示:
SELECT customers.customerName, COUNT(orders.orderNumber) total FROM customers INNER JOIN orders ON customers.customerNumber = orders.customerNumber GROUP BY customerName ORDER BY total DESC
在本教程中,您学习了如何使用MySQL别名,包括列和表别名。