计算字段
存储在数据库表中的数据一般不是应用程序所需要的格式
- 如果想在一个字段中既显示公司名,又显示公司的地址,但这两个信息一般包含在不同的表列中
- 城市、州和邮政编码存储在不同的列中(应该这样),但邮件标签打印程序却需要把它们作为一个恰当格式的字段检索出来
- 列数据是大小写混合的,但报表程序需要把所有数据按大写表示出来。
- 物品订单表存储物品的价格和数量,但不需要存储每个物品的总价格(用价格乘以数量即可)。为打印发票,需要物品的总价格。
- 需要根据表数据进行总数、平均数计算或其他计算
拼接字段
在MySQL的SELECT语句中,可使用Concat()函数来拼接两个列。
SELECT Concat(vend_name,' (',vend_country,')')
FROM vendors
ORDER BY vend_name;
Concat()拼接串,即把多个串连接起来形成一个较长的串
Concat()需要一个或多个指定的串,各个串之间用逗号分隔。上面的SELECT语句连接以下4个元素:
- 存储在vend_name列中的名字;
- 包含一个空格和一个左圆括号的串;
- 存储在vend_country列中的国家;
- 包含一个右圆括号的串。
从上述输出中可以看到,SELECT语句返回包含上述4个元素的单个列(计算字段)。
SELECT Concat(RTRIM(vend_name), ' (',RTRIM(vend_country),')')
FROM vendors
ORDER BY vend_name;
RTrim()函数去掉值右边的所有空格,LTrim()(去掉串左边的空格),Trim()(去掉串左右两边的空格)
使用别名
SELECT Concat(RTRIM(vend_name), ' (',RTRIM(vend_country),')') AS vend_title
FROM vendors
ORDER BY vend_name;
执行算数计算
SELECT prod_id,quantity,item_price,quantity*item_price AS expanded_price
FROM orderitems
WHERE order_num = 20005;
SELECT Now()##Now()函数返回当前日期和时间