0Pricing
SQL Academy · 课时

算术与运算符

在 SQL 中进行加、减、乘、除运算

算术与运算符 是 CoddyKit 上的免费 SQL Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 SQL Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 SQL Academy 课程共包含 4 节课。

在 SELECT 中进行数学运算

SQL 不只是用来获取行。您可以在查询中直接使用算术运算符计算值。

在本课中,您将使用列和字面量进行加、减、乘、除运算,为结果命名,并了解 PostgreSQL 如何确定每个结果的类型。

假设有一个包含 quantity 和 unit_price 的 order_items 表。我们无需修改应用程序代码,就能计算每一行的总额。

SELECT quantity, unit_price, quantity * unit_price AS line_total
FROM order_items;

五种算术运算符

PostgreSQL 支持常用的运算符:

  • + 加法
  • - 减法
  • * 乘法
  • / 除法
  • % 取模(余数)

它们对数值列和字面量的作用与在任何编程语言中一样。下面的查询展示了每种运算符的实际用法。

SELECT
  10 + 3  AS sum,
  10 - 3  AS difference,
  10 * 3  AS product,
  10 / 3  AS quotient,
  10 % 3  AS remainder;

运算符优先级

SQL 遵循标准的数学优先级:*、/ 和 % 的优先级高于 + 和 -。

请使用括号明确表达意图,并覆盖默认的运算顺序。下面两个表达式会产生截然不同的结果。

SELECT
  2 + 3 * 4        AS without_parens,  -- 14
  (2 + 3) * 4      AS with_parens;     -- 20

计算折后价格

一个常见的实际任务是应用百分比折扣。将价格乘以 (1 - discount_rate) 即可。

这里的 discount_rate 以小数形式存储(0.15 = 15%)。括号可以确保先进行减法,再进行乘法。

SELECT
  product_id,
  price,
  discount_rate,
  price * (1 - discount_rate) AS final_price
FROM products;

跨列进行算术运算

操作数不一定是字面量。您可以在一个表达式中组合多个列。

下面我们计算每笔销售的净利润:收入减去成本,再乘以售出的数量。

SELECT
  sale_id,
  (sale_price - cost) * quantity AS profit
FROM sales;

使用 AS 命名结果

如果不为计算列设置别名,系统会自动生成类似 ?column? 的名称。请始终使用 AS 来设置易读的名称。

使用别名还可以让您在工具和报表中更清晰地引用该列。

SELECT
  base_salary,
  base_salary * 0.10 AS bonus,
  base_salary + base_salary * 0.10 AS total_pay
FROM employees;

在 WHERE 中进行算术运算

您也可以在 WHERE 子句中使用算术运算,而不只是用于 SELECT。

这会筛选出计算所得总额超过 100 的订单。注意:对列进行数学运算可能会导致索引无法使用,因此在性能很重要时,筛选条件应优先直接使用列。

SELECT order_id, quantity, unit_price
FROM order_items
WHERE quantity * unit_price > 100;

结果类型取决于输入

PostgreSQL 会根据操作数推断结果类型。整数加整数得到整数;如果任一侧是 numeric 或 float,结果也会采用相应类型。

这在除法中尤为重要,我们稍后会详细介绍。目前请注意,混合不同类型会提升结果的类型。

SELECT
  pg_typeof(4 + 2)        AS int_type,      -- integer
  pg_typeof(4 + 2.0)      AS numeric_type,  -- numeric
  pg_typeof(4 * 1.5);                        -- numeric

取模运算符

% 返回整数除法的余数。它适用于循环逻辑,例如“每隔 N 行”或检查数值的奇偶性。

下面我们使用 % 2 = 0 找出偶数的产品编号。

SELECT product_id, name
FROM products
WHERE product_id % 2 = 0;

使用算术运算更新值

算术运算并不局限于 SELECT。您可以在 UPDATE 中使用它来调整存储的值。

下面的操作会将某个类别中的每个价格提高 5%。右侧的表达式会针对每一行进行计算。

UPDATE products
SET price = price * 1.05
WHERE category = 'electronics';

注意 NULL

任何涉及 NULL 的算术运算都会得到 NULL,因为结果是未知的。

如果某列可能缺少值,请在进行数学运算前使用 COALESCE 为其提供默认值。

SELECT
  base + NULL                     AS is_null,      -- NULL
  base + COALESCE(bonus, 0)       AS safe_total
FROM payroll;

快速检查

在 PostgreSQL 中,表达式 2 + 6 / 2 的计算结果是什么?

回顾

您可以直接在 SQL 中计算值:

  • + - * / % 是核心运算符
  • *、/、% 的优先级高于 + 和 -;请使用括号明确表达意图
  • 使用 AS 为计算列设置别名
  • 算术运算可用于 SELECT、WHERE 和 UPDATE
  • 结果类型取决于操作数,任何为 NULL 的操作数都会使结果变为 NULL

接下来我们将学习如何对这些数值结果进行四舍五入和截断。

常见问题解答

「算术与运算符」课时是免费的吗?

是的 — 「算术与运算符」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 SQL Academy 课程的其余内容,请升级到 CoddyKit PRO。 SQL Academy 课程共包含 4 节课。

「算术与运算符」这节课中我会学到什么?

在 SQL 中进行加、减、乘、除运算 你通过在浏览器中直接运行的动手代码来练习 SQL Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 SQL Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 SQL Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「算术与运算符」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 SQL Academy 课中编写并运行代码吗?

能。每节 SQL Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 算术与运算符
  2. 四舍五入与截断
  3. 整数除法与小数除法
  4. 实用数学函数
← 返回 SQL Academy