为什么SQL标准中没有"数据库"概念的定义或语法?



i浏览ISO/IEC 9075:1992,ISO/IEC 9075-4:2011,我发现未讨论"数据库"一词。例如"数据库"的定义,也没有为create databaseuse database等操作指定标准语法。

CREATE DATABASE的文档在这里说明

SQL语言的ANSI/ISO标准未指定任何语法 对于数据库的构建,数据库来的过程 存在并声明其名称。

我不明白标准的遗漏,任何人都可以解释吗?

术语"数据库"是不同RDBMS实施者的发明,它们以非标准方式使用该术语。不要指望术语数据库在供应商之间使用相同。

ANSI/ISO SQL标准定义目录 schemas 。并非所有供应商都根据SQL标准实施这些供应商,有些供应商随着时间的推移改变了其实现。

https://mariadb.com/kb/en/library/sql-99/catalog/部分说:

群集可能包含零或更多目录。SQL目录是一个命名 一组模式,其中一组必须是一个名为ur-Schema 信息_schema。(信息_schema架构是一组视图 和包含所有SQL-DATA的描述的域 属于该目录。)目录取决于某个集群 - 目录名称必须在群集中唯一 属于 - 并使用实现定义来创建和删除 方法。

模式被称为目录对象,如前所述 可能由一个或多个模式组成。目录的名字有资格 属于它的模式的名称,可以明确 陈述或默认名称将由您的DBM提供。

https://mariadb.com/kb/en/library/sql-99/17-sql-schemas-schema/在某种程度上说:

目录可能包含一个或多个模式。SQL模式是一个命名 由特定授权拥有的SQL-DATA组。 模式取决于某些目录 - 架构名称必须是 模式所属的目录中的独特之处 - 使用SQL-Schema语句创建,更改和删除。这 可能属于模式的对象称为模式对象;那 是,它们取决于一些模式。每个模式对象都有一个名称 在模式中必须是唯一的(在其名称类的对象中) 它属于它。模式对象名称类是:

  • 基础表和视图。
  • 域和UDT。
  • 约束和断言。
  • 字符集。
  • 碰撞。
  • 翻译。
  • 触发器。
  • sql-server模块。
  • sql-invoked例程。

模式可能由这些模式对象零或更多组成。这 架构的名称符合属于它的对象的名称, 并且可以明确说明,或者默认名称为 由您的DBM提供。

最新更新