Module 03 · Intermediate SQL
Built-in Database Functions SQL内置函数:聚合、标量与字符串函数
欢迎。本视频将介绍数据库内置的 SQL 函数。
SQL 内置函数的优势
虽然可以先从数据库中获取数据,然后在应用程序中对其进行操作,但大多数数据库都提供内置函数。
- 执行位置: 这些函数可以包含在 SQL 语句中,从而可以直接在数据库内部对数据执行操作。
- 网络优化: 使用数据库函数可以显著减少需要从数据库检索的数据量,从而降低网络流量和带宽使用。
- 性能提升: 当处理大型数据集时,直接使用内置函数通常比先将数据检索到应用程序中再执行操作更快。
ℹ️ 注意: 也可以在数据库中创建自定义函数(用户定义函数),但这属于更高级的主题。
本课程中的示例将基于一个宠物救助组织数据库中的 PETRESCUE** 表**。该表记录了救援交易详情,包含以下列:ID、ANIMAL、QUANTITY、COST 和 RESCUE_DATE。

一、聚合/列函数 (Aggregate/Column Functions)
聚合函数接受一组相似的值(例如一列中的所有值)作为输入,并返回一个单一的值或 NULL。
常用的聚合函数包括:SUM、MIN(最小)、MAX(最大)、AVG(平均值)等。
聚合函数示例
| 函数 | 描述 | 示例 SQL | 结果列重命名 |
|---|---|---|---|
SUM |
计算列中所有值的总和。 | SELECT SUM(COST) FROM PETRESCUE; |
SELECT SUM(COST) AS SUM_OF_COST FROM PETRESCUE; (使用 AS 关键字) |
MAX |
返回列中的最大值。 | SELECT MAX(QUANTITY) FROM PETRESCUE; (获取单次交易中最大救援数量) |
- |
MIN |
返回列中的最小值。 | SELECT MIN(ID) FROM PETRESCUE WHERE ANIMAL = 'Dog'; (获取动物为“Dog”的最小 ID) |
- |
AVG |
返回列中的平均值或均值。 | SELECT AVG(COST) FROM PETRESCUE; |
- |
数学运算与聚合函数的结合:
可以在列之间执行数学运算,然后在其结果上应用聚合函数。
示例:计算每只狗的平均成本
SQL
SELECT AVG(COST / QUANTITY) FROM PETRESCUE WHERE ANIMAL = 'Dog';
- 由于
COST是多单位的总成本,我们首先用COST除以QUANTITY来计算单位成本,然后求平均值。
二、标量与字符串函数 (Scalar and String Functions)
标量函数对单个值执行操作。
1. 标量函数示例
ROUND: 用于将COST列中的每个值四舍五入到最接近的整数。
SQLSELECT ROUND(COST) FROM PETRESCUE;
2. 字符串函数 (String Functions)
字符串函数是一类标量函数,用于对字符串(即 CHAR 和 VARCHAR 值)执行操作。
| 函数 | 描述 | 示例 SQL |
|---|---|---|
LENGTH |
检索字符串的长度。 | SELECT LENGTH(ANIMAL) FROM PETRESCUE; |
UPPERCASE |
返回字符串的大写形式。 | SELECT UPPERCASE(ANIMAL) FROM PETRESCUE; |
LOWERCASE |
返回字符串的小写形式。 | SELECT LOWERCASE(ANIMAL) FROM PETRESCUE WHERE LOWERCASE(ANIMAL) = 'cat'; |
在 WHERE 子句中使用标量函数:
标量函数可用于 WHERE 子句中,以匹配值。
示例:
SQL
SELECT * FROM PETRESCUE WHERE LOWERCASE(ANIMAL) = 'cat';
- 如果不确定列值是以大写、小写还是混合大小写存储在表中,此语句有助于匹配值。
函数嵌套 (Function Nesting)
可以嵌套函数,让一个函数的结果作为另一个函数的输入。
示例:获取去重后的动物名称大写形式
SQL
SELECT DISTINCT(UPPERCASE(ANIMAL)) FROM PETRESCUE;
UPPERCASE(ANIMAL)函数首先将ANIMAL值转换为大写。- 然后
DISTINCT函数作用于大写结果,返回唯一(不重复)的动物名称。
总结
在本视频中,我们了解了 SQL 内置函数,包括:
- 聚合函数: 如
SUM、MIN、MAX和AVG。 - 标量函数和字符串函数: 如
ROUND、LOWERCASE和UPPERCASE。