计算字段

存在数据库系统中的数据的默认展现方式不一定完全符合应用的要求,比如:

1,数据库系统中姓名、工号是单独存储在两个字段的,但是在显示的时候想显示成“姓名+工号”的形式。

2,数据库系统中金额的显示格式是普通的数字显示方式(比如668186.99),但是显示的时候想以千分位的形式显示(比如668,186.99)。

3,数据库系统中基本工资、奖金是单独存储在两个字段的,但是希望显示员工的工资总额。

4,要检索工资总额的80%超过5000元的员工信息。

5,要升级员工工号,需要将所有员工的工号前增加两位0。

所有这些功能都不能通过简单的SQL语句来完成的,因为需要的数据不是数据表中本来就有的,必须经过一定的计算、转换或者格式化,这种情况下我们可以在宿主语言中通过编写代码的方式来进行这些计算、转换或者格式化的工作,但是可以想象当数据量比较大的时候这样处理的速度是非常慢的。计算字段是数据库系统提供的对数据进行计算、转换或者格式化的功能,由于是在数据库系统内部进行的这些工作,而且数据库系统都这些工作进行了优化,所以其处理效率比在宿主语言中通过编写代码的方式进行处理要高效的多。本节将介绍计算字段的基本使用以及在SELECT、Update、Delete等语句中的应用。

  • 常量字段

软件协会要求各个公司提供所有员工的资料信息,其中包括公司名称、注册资本、员工姓名、年龄、所在子公司,而且出于特殊考虑,要求每个员工都列出这些资料信息。对于单个公司而言,公司名称、注册资本这两部分信息不是能从现有的T_Employee,但是它们是确定的值,因此我们编写下面的SQL语句:


SELECT "CowNew集团",918000000,FName,FAge,FSubCompany FROM T_Employee

这里的"CowNew集团"和918000000并不是一个实际的存在的列,但是在查询出来的数据中它们看起来是一个实际存在的字段,这样的字段被称为“常量字段”(也称为“常量值”),它们完全可以被看成一个值确定的字段,比如可以为常量字段指定别名,执行下面的SQL语句:


SELECT "CowNew 集团" AS CompanyName,918000000 AS RegAmount,FName,FAge,FSubCompany FROM T_Employee
  • 字段间计算

人力资源部要求统计全体员工的工资指数,工资指数的计算公式为年龄与工资的乘积,这就需要计算将FAge和FSalary的乘积做为一个工资指数列体现到检索结果中,执行下面的SQL语句:


SELECT FNumber,FName,FAge * FSalary FROM T_Employee

同样,这里的FAge * FSalary并不是一个实际的存在的列,但是在查询出来的数据中它们看起来是一个实际存在的字段,它们完全可以被看成一个普通字段,比如可以为此字段指定别名,执行下面的SQL语句:


SELECT FNumber,FName,FAge * FSalary AS FSalaryIndex FROM T_Employee

前面提到常量字段完全可以当作普通字段来看待,那么普通字段也可以和常量字段进行计算,甚至常量字段之间也可以进行计算。比如人力资源部要求统计每个员工的工资幸福指数,工资幸福指数的计算公式为工资/(年龄-21),而且要求在每行数据前添加一列,这列

的值等于125与521的和。我们编写下面的SQL:


SELECT 125+521,FNumber,FName,FSalary/(FAge-21) AS FHappyIndex FROM T_Employee

计算字段也可以在WHERE语句等子句或者UPDATE、DELETE中使用。比如下面的SQL用来检索所有资幸福指数大于1000的员工信息:


SELECT * FROM T_Employee WHERE FSalary/(FAge-21)>1000
posted @ 2018-10-20 01:06  尐鱼儿  阅读(720)  评论(0编辑  收藏  举报