MySQL如何为表和字段取别名详解
作者:Vincenyang
为表和字段取别名
阿文之前介绍过MySQL的分组查询、集合函数查询和嵌套子查询,在编写SQL语句时有的地方使用到AS关键字为查询结果中的某一列指定一个特定的名字。在内连接查询时,则对相同的表分别指定两个不同的名字,在这里可以为字段或者表取一个表名,起到区分、标识和简化的作用。
1.为表取别名
当表的名字很长或者执行一些特殊的查询时,为了方便操作或者需要多次使用相同的表时,可以为表指定别名,用这个别名替代表原来的名称。
语法格式:
表名 AS 表别名
"表名"
为数据库中存储的数据表的名称"表别名"
为查询时指定的表的新名称,AS关键字为可选参数
例子:
SELECT * FROM fruits AS OD WHERE OD.s_id = 103;
查询结果:
在这里fruits AS OD代码表示为fruits表取别名为OD,指定过滤条件直接使用OD代替fruits。
例子:
SELECT OG.s_id,OD.f_name, OG.s_name, OG.s_city FROM fruits AS OD INNER JOIN suppliers AS OG ON OD.s_id = OG.s_id;
查询结果:
由结果看到,MySQL可以同时为多个表取别名,而且表别名可以放在不同的位置,如WHERE子句、SELECT列表、ON子句以及ORDER BY子句等。
自连接连接是一种特殊的内连接,在连接查询中的两个表都是同一个表,其查询语句如下
例子:
SELECT OD1.s_id, OD2.s_id, OD1.f_name, OD1.f_price, OD1.f_id FROM fruits AS OD1 INNER JOIN fruits AS OD2 ON OD1.s_id = OD2.s_id AND OD2.s_id = 103;
查询结果:
提示:
在为表取别名时,要保证不能与数据库中其他表的名称冲突。且不能为SQL语句的关键字。
2.为字段取别名
在上面的自连接例子中,可以看到查询出来的两个s_id,字段名分别为s_id和s_id(1),不容易区别到底是哪张表的字段,这时候就需要为字段取列别名。
确实,在有些情况下,显示的列的名称很长或者需要区分或者名称不够直观时,就需要为字段取列别名。
语法格式:
字段名 AS 列别名
"列名"
为表中字段定义的名称"列别名"
为字段新的名称
例子
SELECT f_name AS fruit_name, s_id AS supplier_id, f_price AS fruit_price FROM fruits AS f1 WHERE f1.f_price < 5;
查询结果:
也可以为SELECT子句中的计算字段取别名。例如,对使用COUNT聚合函数或者CONCAT等系统函数执行的结果字段取别名。
例子(取别名前):
SELECT CONCAT(TRIM(s_name)," (", TRIM(s_city),")") FROM suppliers ORDER BY s_name;
查询结果:
例子(取别名后):
SELECT CONCAT(TRIM(s_name)," (", TRIM(s_city),")") AS suppliers_title FROM suppliers ORDER BY s_name;
查询结果:
可以看到比没有取别名的查询结果要更清晰更好理解了
提示:
表别名只在执行查询的时候使用,并不在返回结果中显示,而列别名定义之后,将返回给客户端显示,显示的结果字段为字段列的别名。
总结
- 通过给数据表取别名,可以清楚的辨别表,特别在自连接查询时
- 通过给字段取别名,可以清楚的辨别查询出来的数据,更清晰更好理解
到此这篇关于MySQL如何为表和字段取别名的文章就介绍到这了,更多相关MySQL表和字段取别名内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!