![SQL语言从入门到精通](https://wfqqreader-1252317822.image.myqcloud.com/cover/798/52842798/b_52842798.jpg)
2.2 计算列查询
在使用SELECT语句进行查询时,有时会对列进行计算。例如,对某两个列进行相加或相减计算,得到一列新的数据。本节将会对列的计算查询、连接列值查询和使用表达式查询进行介绍。
2.2.1 连接列值
连接列值是将多个列中的数据合并到一列中。合并多个列后应该给该列设置一个别名以方便查看,如不设置别名,该列的默认列名为“(无列名)”。
【例2.12】 在tb_studentInfo03数据表中,将学生的姓名列和性别列连接合并成一个新列。(实例位置:资源包\TM\sl\2\12)
SQL语句如下:
SELECT Name+Sex as "学生信息" FROM tb_studentInfo03
运行结果如图2.13所示。
![](https://epubservercos.yuewen.com/294587/31398233704595906/epubprivate/OEBPS/Images/Figure-P41_3806.jpg?sign=1738813713-v03hvX0yqVErfOTveoK3PYCEBCmC7pDl-0-79713990de3871f441906c147fb475cf)
图2.13 查看学生信息
2.2.2 查询中使用计算列
在使用SELECT语句查询数据时,可以使用算术运算符来辅助完成一些查询功能。例如,商品的销售金额可以用销售数量乘以商品单价获得。这种查询方式在SQL中会经常使用到。下面介绍几种对列进行运算的方式。
在使用计算列之前,需要先对算术运算符有一个简单的了解,其中常用的算术运算符如表2.1所示。
表2.1 常用的算术运算符
![](https://epubservercos.yuewen.com/294587/31398233704595906/epubprivate/OEBPS/Images/Figure-T41_28344.jpg?sign=1738813713-nzR5GU7WjMi303g5PNk0tX4vvbH8Mo0h-0-afda192ce04e8a3215c9b13852f38966)
注意
上述运算符的优先级顺序是:先乘除(*、/、%),后加减(+、−)。相同优先级时,表达式采用从左到右的计算顺序。使用括号可以提升优先级,减少失误。
1.“−”运算符的应用
下面的示例使用“−”运算符计算出每件商品的销售利润,获得每件商品的销售利润使用单价减去进价就可以实现。
【例2.13】 在tb_goods数据表中,查询每件商品的销售利润。(实例位置:资源包\TM\sl\2\13)
SQL语句如下:
SELECT 编号,商品名称,单价-进价 AS 销售利润 FROM tb_goods
运行结果如图2.14所示。
![](https://epubservercos.yuewen.com/294587/31398233704595906/epubprivate/OEBPS/Images/Figure-P42_3857.jpg?sign=1738813713-0yjJ1WvmhF90hpyyxqfE8ydvV9YKWKu8-0-2b4b562953672c4024257ac944aaba44)
图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所示。
![](https://epubservercos.yuewen.com/294587/31398233704595906/epubprivate/OEBPS/Images/Figure-P42_3846.jpg?sign=1738813713-5C6y2TUSUkqPBGC8wjO7Q10jII18Fxa4-0-7e67a5c9faafc64590c858ad91f6ba3c)
图2.15 计算销售额
![](https://epubservercos.yuewen.com/294587/31398233704595906/epubprivate/OEBPS/Images/Figure-P42_3847.jpg?sign=1738813713-4m9Ogh9J3j9LhvxjGuqPZlTBR6cWdbxD-0-2ddc53314e2c31c4a52004c002f1ea2e)
图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所示。
![](https://epubservercos.yuewen.com/294587/31398233704595906/epubprivate/OEBPS/Images/Figure-P43_3909.jpg?sign=1738813713-pogx59ixii8kW1cXlkiSw79Ix2eIRb7k-0-05a3f49f5bcb91032a2c878945ddced5)
图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所示。
![](https://epubservercos.yuewen.com/294587/31398233704595906/epubprivate/OEBPS/Images/Figure-P43_3896.jpg?sign=1738813713-aL9QeRhorj7SiWS9W0vFvQp0MrCKgAjb-0-6fa2845c828546ae08656e8fd95bae77)
图2.18 添加单位
![](https://epubservercos.yuewen.com/294587/31398233704595906/epubprivate/OEBPS/Images/Figure-P43_3897.jpg?sign=1738813713-VdTgih9bpwwsDoMTuP9abodpm1A4t4MT-0-d739be9cd62dc35fd8245cdce3edc359)
图2.19 使用表达式自动生成列