创建计算字段 :AS
存储在数据库表中的数据都是一些基本的单元,并不是应用程序所需要的格式;
例如,物品订单表存储物品的价格和数量,但不需要存储每个物品的总价格(价格乘以数量)。当为了打印发票的时候,就需要物品的总价格了。
因此,存储在表中的数据都不是应用程序所需要的,我们需要直接从数据库中检索出转换、计算或格式化过的数据;而不是检索出数据,然后再在客户机应用程序或报告中重新格式化(或许你可以在客户机上面做,但我们一般不这么做,因为在数据库服务器上完成这些操作比在客户机上完成要快的多)。
字段:基本上就是列的别名。
重要的是要注意到,只有数据库知道select语句中哪些列是实际的表列,哪些列是计算字段,但是在客户机的角度来看,计算字段的数据是和其他列的数据相同的方式返回的。
拼接字段
下面以一个例子来进行说明。
例如在一个student表中,我们希望表中的数据以 name(score) 的格式显示输出。
name score是数据库student表中的两列数据,应该如何做呢?
MySQL数据库给我们提供了一个拼接函数:concat()。
select concat(name,' (',score,')') from student;
MySQL的不同之处:多数DBMS使用+ 或||来实现拼接,但是MySQL则使用concat()函数来实现。
别名
从前面的输出可以看到,select语句拼接的工作的很好。但是此新计算的列的名字是什么呢?实际上是他并没有名字,它只是一个值。如果仅在SQL上查询一下结果,这样没有什么不好。但是,一个未命名的列不能用于客户机应用中,因为客户机没有办法应用它。
为了解决这个问题,SQL支持列别名。别名就是一个字段或值的替换名。用关键字as来赋予。
例如:对我们上面的例子取一个别名:namsAndScore;
select concat(name,'(',score,')') as nameAndScore from studnet;//用as为新的结果取一个别名
执行算术计算
由于在student这个表中,只有一列成绩,没法进行几门成绩的平均成绩的计算,因此,我这里又新建了一个表格student2.
建表格的命令如下:
create table student2(id int(10),name varchar(10),mathScore int(10),english int(10));
计算平均成绩并且给平均成绩一个别名的方法如下:
select name,mathScore,englishScore,(mathScore+englishScore)/2 as avgScore from student2;
上面这个例子中就应用了算术运算中的 加法和除法.
减法和乘法的用法也与之一样。