创建计算字段

/*
什么是计算字段?
计算字段是运行时在SELECT语句内创建的
为什么要使用计算字段?
由于直接存储在数据库表中的数据在实际应用中不能拿来直接使用,
比如物品订单表里有单价和数量,但是我们也需要汇总总价格等场景,
这个时候我们需要直接从数据库中检索出转换/计算或格式化过的数据,
这个时候计算字段也就派上用场了。
*/

#需要注意的一个细节是虽然从客户端来看计算字段的数据与其他列的数据返回方式相同,但是只有数据库知道哪些是实际的表列,哪些列是计算字段。
#许多转换和格式化工作在数据库服务器上完成比在客户端完成要快得多。

-- 拼接字段(将值联结到一起构成单个值)
/*
1.在Access 和SQL Server中使用+号
2.在DB2、Oracle、PostgreSQL、SQLLite和Open Office Base使用||
3.在Mysql和MariaDB中,必须使用特殊的函数
*/
SELECT Concat(vend_name,' (',vend_country,')')
FROM Vendors
ORDER BY vend_name;

创建计算字段

/*SELECT语句拼接包括以下元素:
1.存储在vend_name列中的名字;
2.包含一个空格和一个左圆括号的字符串;
3.存储在vend_country列中的国家;
4.包含一个右圆括号的字符串
*/

-- 去掉计算字段中的空格用到的函数
/* RTRIM()函数去掉右边所有空格;LTRIM()函数去掉字符串左边的空格;TRIM()去掉字符串左右两边的空格*/

-- 使用别名alias(因为SELECT拼接出的字段并没有列名,未命名的列不能应用于客户端中,所以需要定义别名,用AS关键字赋予)
SELECT Concat(vend_name,' (',vend_country,')')
AS vend_title
FROM Vendors
ORDER BY vend_name;

创建计算字段

/* AS vend_title多加了文本,指示SQL创建一个包含指定计算结果的名为vend_title的计算字段*/


/* 别名的其他用途:
1.在实际的列表名包含不合法的字符(如空格)是重新命名它,在原来的名字含混或容易误解时扩充它.
2.别名的名字既可以是一个单词,也可以是一个字符串。(字符串应该括在引号中)
多名字会给客户端应用带来各种问题,最常见的使用是将多个单词的列名重命名为一个单词的名字。
3.别名也称为导出列。
*/

-- 执行算术计算
SELECT prod_id,quantity,item_price
FROM Orderitems
WHERE order_num = 20008;

创建计算字段

-- 计算总价格
SELECT prod_id,
quantity,
item_price,
quantity*item_price AS expanded_price
FROM Orderitems
WHERE order_num = 20008;

创建计算字段

总结

SELECT语句得到计算字段的用途有两个:

1.拼接字段

2.算术计算

-- SQL算术操作符(+ — * /)运算优先级前面已经讲过

-- SELECT语句为测试、检验函数和计算提供了很好的方法,当省略了FROM子句后就是简单地访问和处理表达式
SELECT 3*2;

创建计算字段

SELECT Trim(' abc ');

创建计算字段

SELECT Now();

创建计算字段