计算字段

存储在数据库表中的数据一般不是应用程序所需要的格式,下面举几个 例子。

  • 需要显示公司名,同时还需要显示公司的地址,但这两个信息存储在不同的表列中。
  • 城市、州和邮政编码存储在不同的列中(应该这样),但邮件标签打印程序需要把它们作为一个有恰当格式的字段检索出来。
  • 列数据是大小写混合的,但报表程序需要把所有数据按大写表示出来。
  • 物品订单表存储物品的价格和数量,不存储每个物品的总价格(用价格乘以数量即可)。但为打印发票,需要物品的总价格。
  • 需要根据表数据进行诸如总数、平均数的计算。

在上述每个例子中,存储在表中的数据都不是应用程序所需要的。我们需要直接从数据库中检索出转换、计算或格式化过的数据,而不是检索出数据,然后再在客户端应用程序中重新格式化。

字段(field)基本上与列(column)的意思相同,经常互换使用,不过数据库列一般称为列,而术语 字段 通常用在计算字段的连接上

拼接字段

拼接(concatenate):将值联结到一起(将一个值附加到另一个值)构成单个值。

在 SQL 中的 SELECT 语句中,可使用一个特殊的操作符来拼接两个列。根据所使用的 DBMS,此操作符可用加号(+)或两个竖杠(||)表示。在 MySQL 和 MariaDB 中,必须使用特殊的函数。

示例:将学生姓名和 ID 拼接在一起

SELECT Concat(name, '(', student_id, ')') FROM students;

使用别名

别名(alias)是一个字段或值的替换名。别名用 AS 关键字赋予。

示例:将学生姓名和 ID 拼接在一起,输出的字段为 name_str

SELECT Concat(name, '(', student_id, ')') AS name_str FROM students;

执行算术计算

计算字段的另一常见用途是对检索出的数据进行算术运算。

示例:orders 表包含收到的所有订单,order_items 表包含每个订单中的各项物品。下面的 SQL 语句检索订单号 66600 中的所有物品

SELECT prod_id, quantity, price FROM order_items WHERE order_id = 66600;
-- 计算
SELECT prod_id, quantity, price, quantity * price AS expanded_price WHERE order_id = 66600;

算术操作符

操作符说明
+
-
*
/