mysql中别名(列别名和表别名)

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子句中指定的列的值可能尚未确定。

4.表的别名

可以使用别名为表添加不同的名称。使用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;
### 创建带有列别名的表 在 MySQL 中,可以通过 `CREATE TABLE` 语句定义新表结构的同时指定列别名。然而,在实际操作中,通常是在查询过程中使用 `SELECT` 语句来为现有表中的列赋予别名,而不是直接在创建表时设定。 对于已经存在的表,可以利用视图(Views)功能实现类似的效果——即基于原始表构建一个新的逻辑表示形式,并在此基础上应用所需的别名: ```sql CREATE VIEW ViewName AS SELECT column_name AS alias_name, another_column AS another_alias FROM original_table; ``` 当希望永久保存带别名的结果集时,则需考虑建立新的物理存储实体(如另一张真正的表格),这涉及数据复制过程;或者继续采用上述提到的方法之一间接达成目标[^3]。 如果确实要新建一张包含特定命名方式字段的新表,那么应该按照标准建表流程执行并给予恰当的名字给各属性,之后再通过查询层面调整显示名称更为常见也更加灵活。 #### 使用示例 下面展示了一个简单的例子,说明如何在一个名为 `Employees` 的表里边增加一列表达员工年薪(`AnnualSalary`),并通过查询为其指派一个易于理解的标签 (`YearlyCompensation`) : ```sql -- 建立测试用的数据表 Employees CREATE TABLE Employees ( EmployeeID INT, FirstName VARCHAR(50), LastName VARCHAR(50), MonthlyPay DECIMAL(10 , 2 ) ); -- 插入几条记录用于演示目的 INSERT INTO Employees (EmployeeID,FirstName,LastName,MonthlyPay) VALUES (1,'John','Doe',8750.00), (2,'Jane','Smith',9250.00); -- 查询时设置别名 YearlyCompensation 表示 AnnualSalary SELECT EmployeeID, CONCAT(FirstName,' ',LastName) AS FullName, MonthlyPay * 12 AS 'Yearly Compensation' FROM Employees; -- 或者更正式的方式是显式写出 as 关键字 SELECT EmployeeID, CONCAT(FirstName,' ',LastName) AS FullName, MonthlyPay * 12 AS YearlyCompensation FROM Employees; ``` 需要注意的是,虽然可以在查询结果集中自由地重命名任何表达式的输出项,但这不会改变底层数据库对象的实际名字或其内部结构。此外,某些特殊字符可能需要被转义才能适合作为 SQL 标识符的一部分[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值