Answers:
Mysql文档说:CREATE SCHEMA是自MySQL 5.0.2起CREATE DATABASE的同义词。
这一切都可以追溯到80年代中期的SQL ANSI标准。
该标准具有“ CREATE SCHEMA”命令,并且它为表和视图名称引入了多个名称空间。所有表和视图都是在“架构”中创建的。我不知道该版本是否定义了对表和视图的一些跨模式访问,但是我认为是的。AFAIR,没有产品(至少在那时还没有)真正实现它,整个概念更多是理论而非实践。
OTOH,ISTR此版本的标准没有“用户”或“ CREATE USER”命令的概念,因此有些产品使用了“用户”的概念(然后他们拥有自己的表和表名空间)视图)来实现其等效的“模式”。
这是系统不同的领域。
就行政管理而言,这无关紧要,因为无论如何,您在这里还是有分歧的。
就应用程序代码而言,“仅”必须考虑一个应用程序从多个名称空间访问表的情况。AFAIK,所有系统都支持语法“。”,为此,名称空间是用户名称空间,“架构”还是“数据库”都无关紧要。
严格来说,MySql中不存在数据库和架构之间的区别。
但是,在其他数据库引擎(例如SQL Server)中却不是这种情况。在SQL Server中:
每个表都属于数据库中一组称为数据库模式的对象。它是容器或名称空间(查询Microsoft SQL Server 2012)
默认情况下,SQL Server中的所有表都属于一个名为dbo的默认架构。查询尚未分配给任何特定模式的表时,可以执行以下操作:
SELECT *
FROM your_table
等效于:
SELECT *
FROM dbo.your_table
现在,SQL Server允许创建不同的架构,这使您可以对具有相似目的的表进行分组。这有助于组织数据库。
例如,您可以创建一个名为sales的架构,其中包含诸如发票,贷方订单(以及与销售相关的任何其他表格)的表,以及另一个名为lookup的架构,其中具有诸如country,currency,subscriptiontypes等表(以及用作外观的任何其他表)上表)。
分配给特定域的表将显示在SQL Server Studio Manager中,表名之前是架构名称(与属于默认dbo架构的表完全相同)。
SQL Server中有特殊的架构。引用同一本书:
有几种内置的数据库模式,不能删除或更改它们:
1)dbo,默认模式。
2)guest包含可供guest用户使用的对象(“ guest用户”是SQL Server术语中的特殊角色,具有一些默认权限和高度受限的权限)。很少用。
3)INFORMATION_SCHEMA,由信息架构视图使用
4)sys,仅供SQL Server内部使用
模式不仅用于分组。如MSDN所述,实际上可以为每个架构的不同用户赋予不同的权限。
这样一来,架构查找上述数据库可以提供给任何标准的用户(例如SELECT
只有权限),而表称为supplierbankaccountdetails可以在一个名为不同的模式来分配资金,并给予在只对用户的访问小组accounts
(仅举一个例子,您就会明白)。
最后,再次引用同一本书:
它不是相同的数据库架构和表架构。前者是表的名称空间,而后者是表的定义
CREATE SCHEMA是CREATE DATABASE的同义词。创建数据库语法
数据库是模式的集合,模式是表的集合。但是在MySQL中,它们以相同的方式使用它。
因此,MySQL“数据库”和MySQL“模式”之间没有区别:这是同一件事的两个名称-表和其他DB对象的命名空间。
对于具有Oracle背景的人:MySQL“数据库”(又名MySQL“模式”)对应于Oracle模式。MySQL和Oracle CREATE SCHEMA命令之间的区别在于,在Oracle中,CREATE SCHEMA命令实际上并不创建模式,而是使用表和视图填充它。而且,Oracle的CREATE DATABASE命令与MySQL的对应功能完全不同。