mysql 主表存hash和子表的名字_MySQL设置别名

通常情况下我们通过计算字段得到的字段名都是比较长的,为了提高查询结果的可读性,我们可以使用AS关键字设置别名,使查询语句更简洁。

MySQL支持两种别名:列别名和表别名。

语法:

select [as] from [as] ;

as关键字可省略

列别名

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

示例1:查询所有员工总人数和平均工资

mysql> select count(*) as 员工数,avg(sal) as 平均工资 from emp;

+-----------+-------------------+

| 员工数 | 平均工资 |

+-----------+-------------------+

| 14 | 2073.214285714286 |

+-----------+-------------------+

示例2:别名包含空格时,需要加引号

mysql> select count(*) as 'count num',avg(sal) as 'avg sal' from emp;

+-----------+-------------------+

| count num | avg sal |

+-----------+-------------------+

| 14 | 2073.214285714286 |

+-----------+-------------------+

示例3:查询员工数不低于5人的部门平均工资,按平均工资降序显示

mysql> select deptno 部门号,count(empno) 员工数,avg(sal) 平均工资

-> from emp

-> group by 部门号

-> having 员工数>=5

-> order by 平均工资 desc;

+-----------+-----------+--------------------+

| 部门号 | 员工数 | 平均工资 |

+-----------+-----------+--------------------+

| 20 | 5 | 2175 |

| 30 | 6 | 1566.6666666666667 |

+-----------+-----------+--------------------+

设置别名后可以在group by,having和order by子句中来引用该别名,而不能在WHERE子句中使用列别名。

因为SQL语句的执行顺序

from -> where -> group by -> having -> select -> distinct -> order by -> limit

因此在where子句执行的时,设置别名的select子句还没有执行,即该别名还不存在,所以where子句不能使用,order by子句是在select后执行的,可以使用列别名。而group by和having子句虽然也是在select前执行,一般也不能在group by和having子句中使用别名,但是MySQL对此做了扩展。在MySQL5.7.5及之后的版本,ONLY_FULL_GROUP_BY sql mode默认开启,MySQL对标准SQL的扩展生效:

允许在select,having和order by子句中使用没有出现在group by中的字段。此时MySQL会随机选择没有出现在group by中的字段的值。

允许在group by和having子句中使用select中的别名。

表别名

当表名重复引用时,可以使用别名为表添加不同的名称,用于简化和区分。

示例:查询所有领导姓名及其下属员工姓名

mysql> select e1.ename 上层领导,e2.ename 下属员工

-> from emp e1,emp e2

-> where e1.empno=e2.mgr;

+--------------+--------------+

| 上层领导 | 下属员工 |

+--------------+--------------+

| ford | smith |

| blake | allen |

| blake | ward |

| king | jones |

| blake | martin |

| king | blake |

| king | clark |

| jones | scott |

| blake | turner |

| scott | adams |

| blake | james |

| jones | ford |

| clark | miller |

+--------------+--------------+

要保证表别名不能与数据库中的其他表名或关键字重复。

表别名只在执行查询时使用,并不在返回结果中显示。而列别名在客户端的查询结果中显示,显示的结果集中字段名即为字段的别名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值