关于as关键字 『 as 关键字作用 | 作用范围 | 细节』

1. as 关键字作用

  1. as关键字用来给 取别名。比如:

    select name as 姓名
    from student 学生表;
    

    注意:理论上 取别名时的as都可以省略。但是习惯为列取别名时不省略as,为表取别名时省略as。

  2. 但其本质上是对其所指向的数据取别名有点指针的味道,因此可以直接为值取别名:
    ① 假设表tb的数据如下:
    在这里插入图片描述
    ② 直接对值取别名:

    select 
    	col1,
    	"c" as col2
    from tb;
    

    ③ 结果为:
    在这里插入图片描述

2. 作用范围

(1) 表别名

表别名在from关键字后面,所以:
在这里插入图片描述
比如常见的几种情况:

-- 在select关键字后
select u.name
from user u;

-- 在join on字段后
select ...
from tab1 a join tab2 b on a.id = b.id;

(2) 列别名

列别名在select关键字后面,所以:
在这里插入图片描述
验证链接上图的参考文章

  • 需要注意的是在本级,也就是select中是不能使用的。比如:
    select
    	age as a,
    	a + 1 as grown  -- 错误,定义的别名a,不能在本级select中使用。只能:age + 1 as grown
    from ...
    
  • 但是在mysql8.0 以及 hive 中,都进行了优化,在select后面的列别名 (注意:这个列别名不能是窗口函数的列别名!!!):从 group by 开始都能使用
    在这里插入图片描述

3. 细节

select 表别名.字段名时查询结果的字段名为字段名,而不是表别名.字段名。比如:

select 
	up.id -- 列名为 id ,而不是 up.id,所以没必要再为该列取列名:up.id as id
from user u join user_product up on u.id = up.uid;

4. 面试题

4.1 表别名和表名重复时,会优先访问表别名

表别名是局部变量,表名是全局变量。因此,表别名和表名重复时,会优先访问表别名:
在这里插入图片描述

4.2 列别名和列名重复时,会优先访问列别名

在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ElegantCodingWH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值