当前位置: 首页 > MySQL数据库

mysql中as怎么用

时间:2026-01-28 12:53:50

本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。

为了查询方便,MySQL 提供了 AS 关键字来为表和字段指定别名。本节主要讲解如何为表和字段指定一个别名。

为字段指定别名

有时,列的名称是一些表达式,使查询的输出很难理解。要给列一个描述性名称,可以使用列别名。

以下语句说明了如何使用列别名:

SELECT  字段名 AS 别名FROM 数据表;

要给字段添加别名,可以使用AS关键词后跟别名。 如果别名包含空格,则必须引用以下内容:

SELECT  字段名 AS `别名`FROM 数据表;

因为AS关键字是可选的,可以在语句中省略它。 请注意,还可以在表达式上使用别名。

我们来看看示例数据库中的employees表,其表结构如下所示 -

mysql> desc employees;+----------------+--------------+------+-----+---------+-------+| Field          | Type         | Null | Key | Default | Extra |+----------------+--------------+------+-----+---------+-------+| employeeNumber | int(11)      | NO   | PRI | NULL    |       || lastName       | varchar(50)  | NO   |     | NULL    |       || firstName      | varchar(50)  | NO   |     | NULL    |       || extension      | varchar(10)  | NO   |     | NULL    |       || email          | varchar(100) | NO   |     | NULL    |       || officeCode     | varchar(10)  | NO   | MUL | NULL    |       || reportsTo      | int(11)      | YES  | MUL | NULL    |       || jobTitle       | varchar(50)  | NO   |     | NULL    |       |+----------------+--------------+------+-----+---------+-------+8 rows in set

以下查询选择员工的名字和姓氏,并将其组合起来生成全名。 CONCAT_WS函数用于连接名字和姓氏。

SELECT     CONCAT_WS(', ', lastName, firstname)FROM    employees;

执行上面代码,得到以下结果 -

mysql> SELECT     CONCAT_WS(', ', lastName, firstname)FROM    employees;+--------------------------------------+| CONCAT_WS(', ', lastName, firstname) |+--------------------------------------+| Murphy, Diane                        || Patterson, Mary                      || Firrelli, Jeff                       || Patterson, William                   || Bondur, Gerard                       || Bow, Anthony                         || Jennings, Leslie                     || Thompson, Leslie                     || Firrelli, Julie                      || Patterson, Steve                     || Tseng, Foon Yue                      || Vanauf, George                       || Bondur, Loui                         || Hernandez, Gerard                    || Castillo, Pamela                     || Bott, Larry                          || Jones, Barry                         || Fixter, Andy                         || Marsh, Peter                         || King, Tom                            || Nishi, Mami                          || Kato, Yoshimi                        || Gerard, Martin                       |+--------------------------------------+23 rows in set

在上面示例中,列标题很难阅读理解。可以为输出的标题分配一个有意义的列别名,以使其更可读,如以下查询:

SELECT CONCAT_WS(', ', lastName, firstname) AS `Full name`FROM employees;

执行上面代码,得到以下结果 -

mysql> SELECT CONCAT_WS(', ', lastName, firstname) AS `Full name`FROM employees;+--------------------+| Full name          |+--------------------+| Murphy, Diane      || Patterson, Mary    || Firrelli, Jeff     |... ...| King, Tom          || Nishi, Mami        || Kato, Yoshimi      || Gerard, Martin     |+--------------------+23 rows in set

在MySQL中,可以使用ORDER BYGROUP BYHAVING子句中的列别名来引用该列。

以下查询使用ORDER BY子句中的列别名按字母顺序排列员工的全名:

SELECT CONCAT_WS(' ', lastName, firstname) `Full name`FROM employeesORDER BY `Full name`;

执行上面代码,得到以下结果 -

mysql> SELECT CONCAT_WS(' ', lastName, firstname) `Full name`FROM employeesORDER BY `Full name`;+-------------------+| Full name         |+-------------------+| Bondur Gerard     || Bondur Loui       || Bott Larry        || Bow Anthony       || Castillo Pamela   || Firrelli Jeff     || Firrelli Julie    || Fixter Andy       || Gerard Martin     || Hernandez Gerard  || Jennings Leslie   || Jones Barry       || Kato Yoshimi      || King Tom          || Marsh Peter       || Murphy Diane      || Nishi Mami        || Patterson Mary    || Patterson Steve   || Patterson William || Thompson Leslie   || Tseng Foon Yue    || Vanauf George     |+-------------------+23 rows in set

以下语句查询总金额大于60000的订单。它在GROUP BYHAVING子句中使用列别名。

SELECT orderNumber `Order no.`, SUM(priceEach * quantityOrdered) totalFROM orderdetailsGROUP BY `Order no.`HAVING total > 60000;

执行上面查询语句,得到以下结果 -

mysql> SELECT orderNumber `Order no.`, SUM(priceEach * quantityOrdered) totalFROM orderdetailsGROUP BY `Order no.`HAVING total > 60000;+-----------+----------+| Order no. | total    |+-----------+----------+|     10165 | 67392.85 ||     10287 | 61402.00 ||     10310 | 61234.67 |+-----------+----------+3 rows in set

为表指定别名

可以使用别名为表添加不同的名称。使用AS关键字在表名称分配别名,如下查询语句语法:

SELECT 字段名 FROM 数据表 AS 别名;

该表的别名称为表别名。像列别名一样,AS关键字是可选的,所以完全可以省略它。

一般在包含INNER JOINLEFT JOINself join子句和子查询的语句中使用表别名。

下面来看看客户(customers)和订单(orders)表,它们的ER图如下所示 -

两个表都具有相同的列名称:customerNumber。如果不使用表别名来指定是哪个表中的customerNumber列,则执行查询时将收到类似以下错误消息:

Error Code: 1052. Column 'customerNumber' in on clause is ambiguous

为避免此错误,应该使用表别名来限定customerNumber列:

SELECT customerName, COUNT(o.orderNumber) totalFROM customers cINNER JOIN orders o ON c.customerNumber = o.customerNumberGROUP BY customerNameHAVING total >=5ORDER BY total DESC;

执行上面查询语句,得到以下结果 -

mysql> SELECT customerName, COUNT(o.orderNumber) totalFROM customers cINNER JOIN orders o ON c.customerNumber = o.customerNumberGROUP BY customerNameHAVING total >=5ORDER BY total DESC;+------------------------------+-------+| customerName                 | total |+------------------------------+-------+| Euro+ Shopping Channel       |    26 || Mini Gifts Distributors Ltd. |    17 || Reims Collectables           |     5 || Down Under Souveniers, Inc   |     5 || Danish Wholesale Imports     |     5 || Australian Collectors, Co.   |     5 || Dragon Souveniers, Ltd.      |     5 |+------------------------------+-------+7 rows in set

上面的查询从客户(customers)和订单(orders)表中选择客户名称和订单数量。 它使用c作为customers表的表别名,o作为orders表的表别名。customersorders表中的列通过表别名(co)引用。

如果您不在上述查询中使用别名,则必须使用表名称来引用其列,这样的会使得查询冗长且可读性较低,如下 -

SELECT customers.customerName, COUNT(orders.orderNumber) totalFROM customersINNER JOIN orders ON customers.customerNumber = orders.customerNumberGROUP BY customerNameORDER BY total DESC

上一篇:mysql中的不等于符号有哪几种
下一篇:mysql怎么设置大小写不敏感
mysql as

  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素