字段别名一个明显的效果是可以自定义查询数据返回的字段名。如下面的表数据:
uid | username | password | regdate | |
---|---|---|---|---|
1 | admin | b7e591c246d010bb2ccd77d52490c85e | admin@520mg.com | 1277992339 |
2 | 小明 | a193686a53e4de85ee3f2ff0576adf01 | xiao@163.com | 1278063917 |
3 | Jack | 0193686a35e4de85ee3f2ff0567adf490 | jack@gmail.com | 1278061380 |
在查询的时候,对 username 字段使用别名:
SELECT username AS name,email FROM user
返回查询结果如下:
name | |
---|---|
admin | admin@520mg.com |
小明 | xiao@163.com |
Jack | jack@gmail.com |
当然如此简单的定义字段的别名是没有太大实际意义的,字段别名更多的意义是解决字段名的重复,如一个表字段被查询两次或更多次时:
SELECT username AS name,username,email FROM user
或者两个及更多表进行查询,有相同的返回字段时:
aid | title | content | uid | pubtime |
---|---|---|---|---|
1 | 文章1 | 文章1正文内容... | 1 | 1278982219 |
2 | 文章2 | 文章2正文内容... | 1 | 1278985319 |
3 | 文章3 | 文章3正文内容... | 2 | 1279185319 |
uid | username | title | password | regdate | |
---|---|---|---|---|---|
1 | admin | 管理员 | b7e591c246d010bb2ccd77d52490c85e | admin@520mg.com | 1277992339 |
2 | 小明 | 观察者 | a193686a53e4de85ee3f2ff0576adf01 | xiao@163.com | 1278063917 |
3 | Jack | 叫我老外 | 0193686a35e4de85ee3f2ff0567adf490 | jack@gmail.com | 1278061380 |
上面两个表都定义了 title 字段且都需要返回该字段数据时,就需要定义字段别名(至少定义一个):
SELECT a.title AS atitle,u.username,u.title AS utitle FROM article AS a, user AS u where a.uid=u.uid
返回查询结果如下:
atitle | username | utitle |
---|---|---|
文章1 | admin | 管理员 |
文章2 | admin | 管理员 |
文章3 | 小明 | 观察者 |
可以看出,当查询返回的字段名称相同时,可以通过定义别名来避免冲突,上面查询的例子同时定义了字段别名与表别名。
提示通常,定义字段别名的 AS 关键字可以省略,即下面两句 SQL 效果一致:
SELECT username AS name FROM user SELECT username name FROM user
但我们建议不要省略 AS 关键字。
别名(alias)是 SQL 的标准语法,几乎所有的数据库系统都支持。在处理一些复杂的查询时,可以合理的定义表和字段别名来使 SQL 语句看起来更加精简易读,也避免查询返回相同字段数据时的冲突。