我浏览了ISO/IEC 9075:1992和ISO / IEC 9075-4:2011,我发现术语"数据库"没有讨论。例如"数据库"的定义,也没有为create database
,use database
等操作指定标准语法。
此处CREATE DATABASE
的文档说明了
SQL语言的ANSI / ISO标准未指定任何语法 用于构建数据库,数据库的过程 成立并宣布其名称。
我不明白标准中的遗漏,任何人都可以解释一下吗?
答案 0 :(得分:1)
术语“数据库”是不同RDBMS实现者的发明,它们以非标准方式使用该术语。不要指望供应商之间的术语数据库使用相同。
ANSI / ISO SQL标准定义目录和架构。并非所有供应商都根据SQL标准实现这些,有些已经随着时间的推移改变了它们的实现。
https://mariadb.com/kb/en/library/sql-99/catalog/部分说:
群集可能包含零个或多个目录。 SQL目录是一个命名的 一组Schema,其中一个必须是Ur-Schema命名 INFORMATION_SCHEMA。 (INFORMATION_SCHEMA架构是一组视图 和包含所有SQL数据描述的域 属于该目录。)目录依赖于某些群集 - 目录名称在目录群集中必须是唯一的 属于 - 并使用实现定义创建和删除 方法
架构称为目录对象,如前所述,称为目录 可能包含一个或多个模式。目录的名称符合条件 属于它的模式的名称,可以是显式的 声明,或者您的DBMS将提供默认名称。
https://mariadb.com/kb/en/library/sql-99/17-sql-schemas-schema/部分说:
目录可能包含一个或多个架构。 SQL Schema是一个命名的 由特定 AuthorizationID 拥有的SQL数据组。 模式依赖于某些目录 - 模式名称必须是 在Schema所属的目录中是唯一的 - 并且是 使用SQL-Schema语句创建,更改和删除。该 可能属于Schema的对象称为Schema Objects;那 是的,他们依赖于一些架构。每个Schema对象都有一个名称 在Schema to中必须是唯一的(在其名称类的对象中) 它属于哪个。模式对象名称类是:
- 基表和视图。
- 域和UDT。
- 约束和断言。
- 字符集。
- 排序规则。
- 翻译。
- 触发器。
- SQL-server Modules。
- SQL调用的例程。
架构可能包含零个或多个这些架构对象。该 模式的名称限定了属于它的对象的名称, 并且可以明确说明,也可以是默认名称 由您的DBMS提供。