Sad*_*egh 27
Mysql文档说:从MySQL 5.0.2开始,CREATE SCHEMA是CREATE DATABASE的同义词.
这一切都可以追溯到80年代中期的SQL ANSI标准.
该标准有一个"CREATE SCHEMA"命令,它为表和视图名称引入了多个名称空间.所有表和视图都是在"模式"中创建的.我不知道该版本是否定义了对表和视图的一些跨模式访问,但我认为它确实如此.AFAIR,没有产品(至少在当时)真正实现了它,整个概念更多的是理论而不是实践.
OTOH,ISTR这个版本的标准没有"用户"或"创建用户"命令的概念,所以有些产品使用了"用户"的概念(然后他有自己的名称空间用于表格和视图)实现它们的等效"模式".
这是系统不同的领域.
就行政管理而言,这不应该太重要,因为在这里你无论如何都有分歧.
就你看应用程序代码而言,你"只"必须关心一个应用程序从多个名称空间访问表的情况.AFAIK,所有系统都支持语法".",为此,名称空间是用户名,"架构"还是"数据库"无关紧要.
严格地说,在MySql中,Database和Schema之间的区别是不存在的.
但是,在其他数据库引擎(如SQL Server)中并非如此.在SQL server:中,
每个表都属于数据库中称为数据库模式的一组对象.它是容器或命名空间(查询Microsoft SQL Server 2012)
默认情况下,SQL Server中的所有表都属于名为dbo的默认架构.查询尚未分配给任何特定模式的表时,可以执行以下操作:
SELECT *
FROM your_table
Run Code Online (Sandbox Code Playgroud)
这相当于:
SELECT *
FROM dbo.your_table
Run Code Online (Sandbox Code Playgroud)
现在,SQL Server允许创建不同的模式,这使您可以对具有类似用途的表进行分组.这有助于组织数据库.
例如,您可以创建一个名为sales的模式,包括发票,债权人(以及与销售相关的任何其他)等表,以及另一个名为lookup的模式,其中包含国家,货币,订阅类(以及用作外观的任何其他表)上表).
分配给特定域的表显示在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
(只是一个例子,你明白了).
最后,再次引用同一本书:
它与数据库架构和表架构不同.前者是表的名称空间,而后者是表定义