Coursera 笔记

Module 03 · Intermediate SQL

Built-in Database Functions SQL内置函数:聚合、标量与字符串函数

Coursera ↗

欢迎。本视频将介绍数据库内置的 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 列中的每个值四舍五入到最接近的整数。
    SQL
    SELECT 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。