1.介紹
使用MySQL別名來提高查詢的可讀性。
MySQL支持兩種別名,稱為列別名和表別名。
有時,列的名稱是一些表達式,使查詢的輸出很難理解。要給列一個描述性名稱,可以使用列別名。
用法:
SELECT
[column_1 | expression] [AS] descriptive_name #要給列添加別名,可以使用AS關鍵詞后跟別名。
FROM table_name;
如果別名包含空格,則必須引用:
SELECT
[column_1 | expression] [AS] 'descriptive name' #因為AS關鍵字是可選的,可以在語句中省略它。
FROM table_name;
2.列別名
查詢選擇員工的名字和姓氏,並將其組合起來生成全名。 CONCAT_WS函數用於連接名字和姓氏。
SELECT
CONCAT_WS(', ', lastName, firstname) [AS] 'Full name'
FROM
employees;
3.子句對列別名的使用
在MySQL中,可以使用ORDER BY,GROUP BY和HAVING子句中的列別名來引用該列。
以下查詢使用ORDER BY子句中的列別名按字母順序排列員工的全名:
SELECT
CONCAT_WS(' ', lastName, firstname) [as] 'Full name'
FROM
employees
ORDER BY
'Full name';
以下語句查詢總金額大於60000的訂單。它在GROUP BY和HAVING子句中使用列別名。
SELECT
orderNumber [as] 'Order no.',
SUM(priceEach * quantityOrdered) [as] total
FROM
orderdetails
GROUP BY
'Order no.'
HAVING
total > 60000;
注意:不能在WHERE子句中使用列別名。原因是當MySQL評估求值WHERE子句時,SELECT子句中指定的列的值可能尚未確定。
5.表的別名
可以使用別名為表添加不同的名稱。使用AS關鍵字在表名稱分配別名,如下查詢語句語法:
table_name [AS] table_alias
兩個表都具有相同的列名稱:customerNumber。如果不使用表別名來指定是哪個表中的customerNumber列:
SELECT
customerName,
COUNT(o.orderNumber) [as] total #列別名
FROM
customers [as] c INNER JOIN orders [as] o #表別名
ON c.customerNumber = o.customerNumber
GROUP BY
customerName
HAVING total >=5
ORDER BY total DESC;