
2.2 计算列查询
在使用SELECT语句进行查询时,有时会对列进行计算。例如,对某两个列进行相加或相减计算,得到一列新的数据。本节将会对列的计算查询、连接列值查询和使用表达式查询进行介绍。
2.2.1 连接列值
连接列值是将多个列中的数据合并到一列中。合并多个列后应该给该列设置一个别名以方便查看,如不设置别名,该列的默认列名为“(无列名)”。
【例2.12】 在tb_studentInfo03数据表中,将学生的姓名列和性别列连接合并成一个新列。(实例位置:资源包\TM\sl\2\12)
SQL语句如下:
SELECT Name+Sex as "学生信息" FROM tb_studentInfo03
运行结果如图2.13所示。

图2.13 查看学生信息
2.2.2 查询中使用计算列
在使用SELECT语句查询数据时,可以使用算术运算符来辅助完成一些查询功能。例如,商品的销售金额可以用销售数量乘以商品单价获得。这种查询方式在SQL中会经常使用到。下面介绍几种对列进行运算的方式。
在使用计算列之前,需要先对算术运算符有一个简单的了解,其中常用的算术运算符如表2.1所示。
表2.1 常用的算术运算符

注意
上述运算符的优先级顺序是:先乘除(*、/、%),后加减(+、−)。相同优先级时,表达式采用从左到右的计算顺序。使用括号可以提升优先级,减少失误。
1.“−”运算符的应用
下面的示例使用“−”运算符计算出每件商品的销售利润,获得每件商品的销售利润使用单价减去进价就可以实现。
【例2.13】 在tb_goods数据表中,查询每件商品的销售利润。(实例位置:资源包\TM\sl\2\13)
SQL语句如下:
SELECT 编号,商品名称,单价-进价 AS 销售利润 FROM tb_goods
运行结果如图2.14所示。

图2.14 计算销售利润
2.“*”运算符的应用
下面的示例使用“*”运算符计算出每件商品的销售额,计算每件商品的销售额使用销售数量乘以单价就可以实现。
【例2.14】 在tb_goods数据表中,查询每件商品的销售额。(实例位置:资源包\TM\sl\2\14)
SQL语句如下:
SELECT 编号,商品名称,销售数量*单价 AS 销售额 FROM tb_goods
运行结果如图2.15所示。
3.运算符号的综合运用
下面的示例将综合运用“*”“−”“/”“()”运算符,计算每件商品销售的利润。先计算出商品的总销售利润,再除以销售的数量将会获得每件商品的销售利润。
【例2.15】 在tb_goods数据表中,查询出每件商品的销售利润。(实例位置:资源包\TM\sl\2\15)
SQL语句如下:
SELECT 编号,商品名称, (销售数量*单价-进价*销售数量)/销售数量 AS 销售利润 FROM tb_goods
运行结果如图2.16所示。

图2.15 计算销售额

图2.16 计算每件商品利润
2.2.3 查询中使用表达式
在SELECT语句中也可以使用表达式。例如,给某列数据增加一个字符串或使用表达式单独生成一个新列。下面将通过使用示例演示在查询中使用表达式。
1.数值表达式
下面的示例通过使用数值表达式将“进价”列增加50元,并使用别名将该列重新命名。
【例2.16】 在tb_goods数据表中,使用表达式将进价列增加50元。(实例位置:资源包\TM\sl\2\16)
SQL语句如下:
SELECT 编号,商品名称,销售数量,进价+50 AS 进价,单价 FROM tb_goods
运行结果如图2.17所示。

图2.17 进价增加50元
2.字符表达式
下面的示例通过字符表达式为“销售数量”列中的值添加一个单位“台”,为“进价”列中的值添加一个单位“元”,最后通过使用别名将这两列重新命名。
【例2.17】 在tb_goods数据表中,为“销售数量”列和“进价”列分别添加两个单位“台”和“元”。(实例位置:资源包\TM\sl\2\17)
SQL语句如下:
SELECT 编号,商品名称,CONVERT(char(2),销售数量)+'台' AS 销售数量 , CONVERT(char(8),进价)+'元' AS 进价 FROM tb_goods
运行结果如图2.18所示。
3.使用表达式创建新列
下面的示例通过数值表达式和字符表达式创建两个新的列。
【例2.18】 在tb_goods数据表中,使用表达式自动生成两个新列。(实例位置:资源包\TM\sl\2\18)
SQL语句如下:
SELECT 编号,商品名称,1+1,'字符'+'串列'FROM tb_goods
运行结果如图2.19所示。

图2.18 添加单位

图2.19 使用表达式自动生成列