第 9 章 在数据库中存储逻辑 在数据库中存储逻辑
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
大多数关系数据库允许您在所谓的存储过程和用户自定义函数(UDF)中分割可重复使用的逻辑块。此外,许多关系数据库允许您通过使用触发器对数据变化甚至数据库结构变化做出反应。SQL 标准定义了表达这些触发器的语法。在本章中,我们将重点介绍用于处理铸型、游标、函数、方法、存储过程、触发器和类型的 SQL 标准命令,以及这些命令在本书所涉及的数据库中的支持程度(包括对标准的任何偏离或扩展)。最新 SQL 标准未涵盖的一项特殊功能是创建聚合函数的语法。我们涉及的所有数据库都支持这一功能,但它们在语法上有很大差异。此外,SQL 标准不包括触发器,当数据库中的对象(如表、视图甚至函数)被添加、更改或删除时,触发器会采取行动。同样,大多数平台都提供此类触发器,但语法各不相同,你会看到这一点。
如何使用本章
研究本章中的命令时:
请阅读"SQL 平台支持"。
查看表 9-1。
查找特定的 SQL 语句,检查语法,阅读 "关键字"、"规则一览 "和 "编程技巧和疑难问题 "部分。即使您正在查找特定平台的实现,也要这样做。
最后,请阅读特定平台的实施信息。
您会注意到,特定平台实现的条目不会重复任何与标准无异的子句信息。因此,您可能需要在供应商变体和 SQL 标准的描述之间翻阅,以涵盖该命令的所有可能细节。
在讨论 MySQL 时,我们还将讨论 MySQL 的分支 MariaDB。在大多数情况下,MySQL 和 MariaDB 提供完全兼容的语法。在这种情况下,我们将它们统称为 MySQL。只有在 MariaDB 与 MySQL 有重要区别的情况下,我们才会明确提及 MariaDB。
SQL 平台支持
表 9-1列出了本章讨论的 SQL 语句、支持这些语句的平台及其支持程度。下面的列表提供了阅读表 9-1 的有用提示,并解释了每个缩写代表的含义:
第一列包含按字母顺序排列的 SQL 命令。
每条命令的 SQL 语句类别在第二列中标明。
随后的栏目列出了每个供应商的支持级别:
- 支持 (S)
- 平台支持特定命令的 SQL 标准。
- 支持,有变体 (SWV)
- 平台支持特定命令的 SQL 标准,使用供应商特定的代码或语法。
- 支持,有限制(SWL)
- 平台支持 SQL 标准为特定命令指定的部分但非全部功能。
- 不支持 (NS)
- 根据 SQL 标准,平台不支持特定命令。
表格后面的章节详细描述了这些命令。请记住,即使特定 SQL 命令在表中被列为 "不支持",该平台通常也有其他编码或语法来执行相同的命令或功能。因此,请务必阅读本章后面关于每条命令的讨论和示例。同样,表 9-1中的某些命令在 SQL 标准中也找不到;这些命令在表中的 "SQL 类 "列中用 "非标准 "一词表示。
| SQL 命令 | SQL 类 | MySQL/ MariaDB | Oracle | PostgreSQL | SQL 服务器 |
|---|---|---|---|---|---|
ALTER AGGREGATE |
非标准 | NS |
NS |
SWV |
NS |
ALTER FUNCTION |
非标准 | SWV |
SWV |
SWV |
SWV |
ALTER METHOD |
SQL 模式 | NS |
NS |
NS |
NS |
ALTER PROCEDURE |
SQL 模式 | SWV |
SWV |
SWV |
SWV |
ALTER TRIGGER |
非标准 | NS |
SWV |
SWV |
SWV |