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>descemployees;+----------------+--------------+------+-----+---------+-------+|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||+----------------+--------------+------+-----+---------+-------+8rowsinset
以下查询选择员工的名字和姓氏,并将其组合起来生成全名。 CONCAT_WS
函数用于连接名字和姓氏。
SELECTCONCAT_WS(',',lastName,firstname)FROMemployees;
执行上面代码,得到以下结果 -
mysql>SELECTCONCAT_WS(',',lastName,firstname)FROMemployees;+--------------------------------------+|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,FoonYue||Vanauf,George||Bondur,Loui||Hernandez,Gerard||Castillo,Pamela||Bott,Larry||Jones,Barry||Fixter,Andy||Marsh,Peter||King,Tom||Nishi,Mami||Kato,Yoshimi||Gerard,Martin|+--------------------------------------+23rowsinset
在上面示例中,列标题很难阅读理解。可以为输出的标题分配一个有意义的列别名,以使其更可读,如以下查询:
SELECTCONCAT_WS(',',lastName,firstname)AS`Fullname`FROMemployees;
执行上面代码,得到以下结果 -
mysql>SELECTCONCAT_WS(',',lastName,firstname)AS`Fullname`FROMemployees;+--------------------+|Fullname|+--------------------+|Murphy,Diane||Patterson,Mary||Firrelli,Jeff|......|King,Tom||Nishi,Mami||Kato,Yoshimi||Gerard,Martin|+--------------------+23rowsinset
在MySQL中,可以使用ORDER BY
,GROUP BY
和HAVING
子句中的列别名来引用该列。
以下查询使用ORDER BY
子句中的列别名按字母顺序排列员工的全名:
SELECTCONCAT_WS('',lastName,firstname)`Fullname`FROMemployeesORDERBY`Fullname`;
执行上面代码,得到以下结果 -
mysql>SELECTCONCAT_WS('',lastName,firstname)`Fullname`FROMemployeesORDERBY`Fullname`;+-------------------+|Fullname|+-------------------+|BondurGerard||BondurLoui||BottLarry||BowAnthony||CastilloPamela||FirrelliJeff||FirrelliJulie||FixterAndy||GerardMartin||HernandezGerard||JenningsLeslie||JonesBarry||KatoYoshimi||KingTom||MarshPeter||MurphyDiane||NishiMami||PattersonMary||PattersonSteve||PattersonWilliam||ThompsonLeslie||TsengFoonYue||VanaufGeorge|+-------------------+23rowsinset
以下语句查询总金额大于60000
的订单。它在GROUP BY
和HAVING
子句中使用列别名。
SELECTorderNumber`Orderno.`,SUM(priceEach*quantityOrdered)totalFROMorderdetailsGROUPBY`Orderno.`HAVINGtotal>60000;
执行上面查询语句,得到以下结果 -
mysql>SELECTorderNumber`Orderno.`,SUM(priceEach*quantityOrdered)totalFROMorderdetailsGROUPBY`Orderno.`HAVINGtotal>60000;+-----------+----------+|Orderno.|total|+-----------+----------+|10165|67392.85||10287|61402.00||10310|61234.67|+-----------+----------+3rowsinset
为表指定别名请注意,不能在
WHERE
子句中使用列别名。原因是当MySQL评估求值WHERE
子句时,SELECT
子句中指定的列的值可能尚未确定。
可以使用别名为表添加不同的名称。使用AS
关键字在表名称分配别名,如下查询语句语法:
SELECT字段名FROM数据表AS别名;
该表的别名称为表别名。像列别名一样,AS
关键字是可选的,所以完全可以省略它。
一般在包含INNER JOIN
,LEFT JOIN
,self join
子句和子查询的语句中使用表别名。
下面来看看客户(customers
)和订单(orders
)表,它们的ER图如下所示 -
两个表都具有相同的列名称:customerNumber
。如果不使用表别名来指定是哪个表中的customerNumber
列,则执行查询时将收到类似以下错误消息:
ErrorCode:1052.Column'customerNumber'inonclauseisambiguous
为避免此错误,应该使用表别名来限定customerNumber
列:
SELECTcustomerName,COUNT(o.orderNumber)totalFROMcustomerscINNERJOINordersoONc.customerNumber=o.customerNumberGROUPBYcustomerNameHAVINGtotal>=5ORDERBYtotalDESC;
执行上面查询语句,得到以下结果 -
mysql>SELECTcustomerName,COUNT(o.orderNumber)totalFROMcustomerscINNERJOINordersoONc.customerNumber=o.customerNumberGROUPBYcustomerNameHAVINGtotal>=5ORDERBYtotalDESC;+------------------------------+-------+|customerName|total|+------------------------------+-------+|Euro+ShoppingChannel|26||MiniGiftsDistributorsLtd.|17||ReimsCollectables|5||DownUnderSouveniers,Inc|5||DanishWholesaleImports|5||AustralianCollectors,Co.|5||DragonSouveniers,Ltd.|5|+------------------------------+-------+7rowsinset
上面的查询从客户(customers
)和订单(orders
)表中选择客户名称和订单数量。 它使用c
作为customers
表的表别名,o
作为orders
表的表别名。customers
和orders
表中的列通过表别名(c
和o
)引用。
如果您不在上述查询中使用别名,则必须使用表名称来引用其列,这样的会使得查询冗长且可读性较低,如下 -
SELECTcustomers.customerName,COUNT(orders.orderNumber)totalFROMcustomersINNERJOINordersONcustomers.customerNumber=orders.customerNumberGROUPBYcustomerNameORDERBYtotalDESC
到此,相信大家对“mysql中as怎么用”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。