1 、计算字段
1、存储在数据库表中的数据一般不是应用程序所需要的格式。例如:
- 如果想在一个字段中既显示公司名,又显示公司的地址,但这两 个信息一般包含在不同的表列中。
- 城市、州和邮政编码存储在不同的列中(应该这样),但邮件标签 打印程序却需要把它们作为一个恰当格式的字段检索出来。
- 列数据是大小写混合的,但报表程序需要把所有数据按大写表示 出来。
- 物品订单表存储物品的价格和数量,但不需要存储每个物品的总 价格(用价格乘以数量即可)。为打印发票,需要物品的总价格。
- 需要根据表数据进行总数、平均数计算或其他计算。
在上述每个例子中,存储在表中的数据都不是应用程序所需要的。 我们需要直接从数据库中检索出转换、计算或格式化过的数据;而不是 检索出数据,然后再在客户机应用程序或报告程序中重新格式化。
这就是计算字段发挥作用的所在了。与前面各章介绍过的列不同, 计算字段并不实际存在于数据库表中。计算字段是运行时在SELECT语句 内创建的。
2、字段(field)
基本上与列(column)的意思相同,经常互换使 用,不过数据库列一般称为列,而术语字段通常用在计算字段的 连接上。
3、客户机与服务器的格式
可在SQL语句内完成的许多转换 和格式化工作都可以直接在客户机应用程序内完成。但一 般来说,在数据库服务器上完成这些操作比在客户机中完 成要快得多,因为DBMS是设计来快速有效地完成这种处 理的。
例子
2、 拼接字段
1、拼接(concatenate)
将值联结到一起构成单个值。
2、MySQL的不同之处
多数DBMS使用+或||来实现拼接, MySQL则使用Concat()函数来实现。当把SQL语句转换成 MySQL语句时一定要把这个区别铭记在心。
3、例子
解决办法是把两个列拼接起来。在MySQL的SELECT语句中,可使用 Concat()函数来拼接两个列。
例如:拼接人员老家所在的城市和省份
SELECT Concat(city,'(',province,')')
FROM people;
4、Concat()拼接串,即把多个串连接起来形成一个较长的串。
Concat()需要一个或多个指定的串,各个串之间用逗号分隔。 上面的SELECT语句连接以下4个元素:
- 存储在vend_name列中的名字;
- 包含一个空格和一个左圆括号的串;
- 存储在vend_country列中的国家;
- 包含一个右圆括号的串。
5、使用别名
从前面的输出中可以看到,SELECT语句拼接地址字段工作得很好。 但此新计算列的名字是什么呢?实际上它没有名字,它只是一个值。如 果仅在SQL查询工具中查看一下结果,这样没有什么不好。但是,一个未 命名的列不能用于客户机应用中,因为客户机没有办法引用它。
为了解决这个问题,SQL支持列别名。别名(alias)是一个字段或值 的替换名。别名用AS关键字赋予。
例如:
SELECT Concat(city,'(',province,')') AS address
FROM people;
从输出中可以看到,结果与以 前的相同,但现在列名为 address,任何客户机应用都可以按名引用 这个列,就像它是一个实际的表列一样。
别名的其他用途
- 实际 的表列名包含不符合规定的字符(如空格)时重新命名它,在 原来的名字含混或容易误解时扩充它
- 两个表中字段相同,命这两个字段为不一样的别名,就可以使用别名调用。
3、执行算术计算
MySQL支持列出的基本算术操作符。此外,圆括号可用来 区分优先顺序。
例如:总薪水(salary)除以工作天数(days)得到日薪水(Daily_salary)
SELECT id,
first_name,
last_name,
salary/days AS Daily_salary
FROM people;
总结
主要就是拼接字段。