MySQL中的模式/数据库之间的区别

MySQL中的模式和数据库有区别吗? 在SQL Server中,数据库是与模式相关的更高级别的容器。

我读过Create SchemaCreate Database在MySQL中做基本相同的事情,这使我相信模式和数据库对于相同的对象是不同的单词。

正如MySQL术语表中所定义的那样:

在MySQL中,物理上, 模式数据库是同义的。 您可以在MySQL SQL语法中用关键字SCHEMA替代DATABASE ,例如使用CREATE SCHEMA而不是CREATE DATABASE

其他一些数据库产品也有所区别。 例如,在Oracle数据库产品中, 模式仅表示数据库的一部分:由单个用户拥有的表和其他对象。

取决于数据库服务器。 MySQL不在乎,它基本上是一样的东西。

OracleDB2和其他企业级数据库解决scheme是有区别的。 通常, 模式是表的集合, 数据库是模式的集合。

参考MySql文档 ,

CREATE DATABASE用给定的名字创build一个数据库。 要使用此语句,您需要数据库的CREATE特权。 CREATE SCHEMA是MySQL 5.0.2的CREATE DATABASE的同义词。

PostgreSQL支持模式,这是数据库的一个子集: https : //www.postgresql.org/docs/current/static/ddl-schemas.html

一个数据库包含一个或多个命名模式,该模式又包含表格。 模式还包含其他types的命名对象,包括数据types,函数和运算符。 相同的对象名称可以在不同的模式中使用而不会发生冲突。 例如,schema1和myschema都可以包含名为mytable的表。 与数据库不同,模式不是严格分离的:用户可以访问连接到数据库的任何模式中的对象,如果他们有权这样做的话。

架构类似于操作系统级别的目录,只是架构不能嵌套。

在我看来,MySQL并不是一个参考数据库。 你不应该引用MySQL的解释。 MySQL实现了非标准的SQL,有时声明了它不支持的特性。 例如,在MySQL中,CREATE模式只会创build一个DATABASE。 这是真正误导用户的。

这种词汇被DBA称为“MySQLism”。

是的,人们在MySQL中交换使用这些术语。 虽然通常你会听到人们不恰当地将整个数据库服务器称为数据库。

以Microsoft SQL Server为例,Schema引用单个用户,并且是指示服务器,数据库,模式,表和对象顺序的另一个容器级别。

例如,当您打算更新dbo.table_a并且语法不是完全限定的(如UPDATE table.a)时,DBMS不能决定使用预期的表。 基本上默认情况下,DBMS将利用myuser.table_a