加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql上as怎么用

发布时间:2023-05-06 14:13:30 所属栏目:MySql教程 来源:
导读:本篇内容主要讲解“mysql中as怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql中as怎么用”吧!

在mysql中,“as”关键
本篇内容主要讲解“mysql中as怎么用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql中as怎么用”吧!
 
在mysql中,“as”关键字用于为数据表和字段指定别名,语法:1、“SELECT 字段名 AS 别名 FROM 数据表;”,可为字段指定别名;2、“SELECT 字段名 FROM 数据表 AS 别名;”,可为表指定别名。
 
本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。
 
为了查询方便,MySQL 提供了 AS 关键字来为表和字段指定别名。本节主要讲解如何为表和字段指定一个别名。
 
在使用 MySQL查询时,当表名很长或者执行一些特殊查询的时候,为了方便操作或者需要多次使用相同的表时,可以为表指定别名,用这个别名代替表原来的名称。
 
为字段指定别名
 
有时,列的名称是一些表达式,使查询的输出很难理解。要给列一个描述性名称,可以使用列别名。
 
以下语句说明了如何使用列别名:
 
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 BY,GROUP BY和HAVING子句中的列别名来引用该列。
 
以下查询使用ORDER BY子句中的列别名按字母顺序排列员工的全名:
 
SELECT
 
 CONCAT_WS(' ', lastName, firstname) `Full name`
 
FROM
 
 employees
 
ORDER BY
 
 `Full name`;
 
执行上面代码,得到以下结果 -
 
mysql> SELECT
 
 CONCAT_WS(' ', lastName, firstname) `Full name`
 
FROM
 
 employees
 
ORDER 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 BY和HAVING子句中使用列别名。
 
SELECT
 
 orderNumber `Order no.`,
 
 SUM(priceEach * quantityOrdered) total
 
FROM
 
 orderdetails
 
GROUP BY
 
 `Order no.`
 
HAVING
 
 total > 60000;
 
执行上面查询语句,得到以下结果 -
 
mysql> SELECT
 
 orderNumber `Order no.`,
 
 SUM(priceEach * quantityOrdered) total
 
FROM
 
 orderdetails
 
GROUP BY
 
 `Order no.`
 
HAVING
 
 total > 60000;
 
+-----------+----------+
 
| Order no. | total    |
 
+-----------+----------+
 
|     10165 | 67392.85 |
 
|     10287 | 61402.00 |
 
|     10310 | 61234.67 |
 
+-----------+----------+
 
3 rows in set
 
请注意,不能在WHERE子句中使用列别名。原因是当MySQL评估求值WHERE子句时,SELECT子句中指定的列的值可能尚未确定。
 
为表指定别名
 
可以使用别名为表添加不同的名称。使用AS关键字在表名称分配别名,如下查询语句语法:
 
SELECT 字段名 FROM 数据表 AS 别名;
 
该表的别名称为表别名。像列别名一样,AS关键字是可选的,所以完全可以省略它。
 
一般在包含INNER JOIN,LEFT JOIN,self join子句和子查询的语句中使用表别名。
 
下面来看看客户(customers)和订单(orders)表,它们的ER图如下所示 -

两个表都具有相同的列名称: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
 
HAVING total >=5
 
ORDER BY
 
 total DESC;
 
执行上面查询语句,得到以下结果 -
 
mysql> SELECT
 
 customerName,
 
 COUNT(o.orderNumber) total
 
FROM
 
 customers c
 
INNER JOIN orders o ON c.customerNumber = o.customerNumber
 
GROUP BY
 
 customerName
 
HAVING total >=5
 
ORDER 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表的表别名。customers和orders表中的列通过表别名(c和o)引用。
 
如果您不在上述查询中使用别名,则必须使用表名称来引用其列,这样的会使得查询冗长且可读性较低,如下 -
 
SELECT
 
 customers.customerName,
 
 COUNT(orders.orderNumber) total
 
FROM
 
 customers
 
INNER JOIN orders ON customers.customerNumber = orders.customerNumber
 
GROUP BY
 
 customerName
 
ORDER BY
 
 total DESC
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!