mysql为表和字段取别名_MySQL查询函数---为表和字段取别名

(1)为表取别名

(2)为字段取别名

(1)为表取别名

当表名字很长或者执行一些特殊查询时,为了方便操作或者需要多次使用相同的表时,可以为表指定别名,用这个别名代替原来的名称。为表取别名的基本语法格式为:

表名 [as] 表别名

"表名"为数据库中存储的数据表的名称,“表别名为查询时指定的表的新名称,as关键字为可选参数”

【例1】为orders表取别名o,查询30001订单的下单日期,SQL语句如下;

mysql> select * from orders as o

-> where o.o_num = 30001;

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

| o_num | o_date | c_id |

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

| 30001 | 2008-09-01 00:00:00 | 10001 |

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

1 row in set (0.00 sec)

【例2】为customers和orders表分别取别名,并进行连接查询,SQL语句如下:

mysql> select c.c_id,o.o_num

-> from customers as c left join orders as o

-> on c.c_id = o.c_id;

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

| c_id | o_num |

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

| 10001 | 30001 |

| 10003 | 30002 |

| 10004 | 30003 |

| 10001 | 30005 |

| 10002 | NULL |

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

5 rows in set (0.05 sec)

由结果可以看到,MySQL可以同时为多个表取别名,而且表别名可以放在不同的位置,如where子句、select列表、on子句以及order by子句等。

自连接是一种特殊的内连接,在连接查询中的两个表都是同一个表,其查询语句如下:

mysql> select f1.f_id,f1.f_name

-> from fruits as f1,fruits as f2

-> where f1.s_id = f2.s_id and f2.f_id = 'a1';

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

| f_id | f_name |

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

| a1 | apple |

| b1 | blackberry |

| c0 | cherry |

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

3 rows in set (0.00 sec)

(2)为字段取别名

在使用select语句显示查询结果是,MySQL会显示每个select后面指定的输出列,有些情况下,显示的列的名称会很长或者名称不够直观,MySQL可以指定列别名,替换字段或者表达式。为字段取别名的基本语法格式为:

列名 [as] 列别名

"列名"为表中字段定义的名称,"列别名"为字段新的名称,as关键字为可选参数。

【例1】查询fruits表,为f_name取别名fruit_name、f_price取别名fruit_price,再为fruits表取别名f1,查询表中f_price<8的水果名称,SQL语句如下:

mysql> select f1.f_name as fruits_name,f1.f_price as fruit_price

-> from fruits as f1

-> where f1.f_price <8;

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

| fruits_name | fruit_price |

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

| lemon | 6.40 |

| apple | 5.20 |

| apricot | 2.20 |

| berry | 7.60 |

| xxxx | 3.60 |

| cherry | 3.20 |

| xbabay | 2.60 |

| grape | 5.30 |

| xbabay | 3.60 |

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

9 rows in set (0.00 sec)

【例2】查询suppliers表中字段s_name和s_city,使用concat函数连接这两个字段值,并取列别名为suppliers_title。

mysql> select concat(trim(s_name),'(',trim(s_city),')')

-> from suppliers

-> order by s_name;

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

| concat(trim(s_name),'(',trim(s_city),')') |

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

| ACME(Shanghai) |

| DK Inc(Zhengzhou) |

| FastFruit Inc.(Tianjin) |

| FNK Inc.(Zhongshan) |

| Good Set(Taiyuan) |

| Just Eat Ours(Beijing) |

| LT Supplies(Chongqing) |

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

7 rows in set (0.00 sec)

由结果可以看到,显示结果的列名称为select子句后面的计算字段,实际上计算之后的列是没有名字的,这样的结果让人很不容易理解,如果为字段取一个别名,将会使结果更清晰,SQL语句如下:

mysql> select concat(trim(s_name),'(',trim(s_city),')')

-> as suppliers_title

-> from suppliers

-> order by s_name;

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

| suppliers_title |

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

| ACME(Shanghai) |

| DK Inc(Zhengzhou) |

| FastFruit Inc.(Tianjin) |

| FNK Inc.(Zhongshan) |

| Good Set(Taiyuan) |

| Just Eat Ours(Beijing) |

| LT Supplies(Chongqing) |

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

7 rows in set (0.00 sec)

可以看到,select增加了 as suppliers_title,它指示了MySQL为计算字段创建一个别名suppliers_title,显示结果为指定的列别名,这样就增强了查询结果的可读性。

注意:表别名只在执行查询的时候使用,并不在返回结果中显示,而列别名定义之后,将返回给客户端显示,显示的结果字段为字段列的别名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值