为什么没有#34;数据库"的概念的定义或语法。在SQL标准?

时间:2017-09-17 15:47:38

标签: sql iso ansi standard-sql

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

此处CREATE DATABASE的文档说明了

  

SQL语言的ANSI / ISO标准未指定任何语法   用于构建数据库,数据库的过程   成立并宣布其名称。

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

1 个答案:

答案 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提供。