严格来说,Database和Schema的区别在MySql中是不存在的。
但是,在 SQL Server 等其他数据库引擎中并非如此。在 SQL 服务器中:,
每个表都属于数据库中称为数据库模式的一组对象。它是一个容器或命名空间 (Querying Microsoft SQL Server 2012)
默认情况下,SQL Server 中的所有表都属于一个名为 dbo 的默认架构。当您查询尚未分配给任何特定架构的表时,您可以执行以下操作:
SELECT *
FROM your_table
相当于:
SELECT *
FROM dbo.your_table
现在,SQL Server 允许创建不同的模式,这使您可以对具有相似目的的表进行分组。这有助于组织数据库。
例如,您可以创建一个名为 sales 的架构,其中包含 invoices、creditorders 等表(以及与销售相关的任何其他表) ,以及另一个名为 lookup 的模式,其中包含 countries、currencies、subscriptiontypes 等表(以及使用的任何其他表作为查找表)。
分配给特定域的表显示在 SQL Server Studio 管理器中,表名前附加架构名称(与属于默认 dbo 架构的表完全相同) .
SQL Server 中有特殊的架构。引用同一本书:
有几个内置的数据库模式,它们不能被删除或更改:
1) dbo,默认架构。
2) guest 包含可供guest 用户 使用的对象(“guest 用户”是 SQL Server 术语中的特殊角色,具有一些默认和高度受限的权限)。很少使用。
3) INFORMATION_SCHEMA,由信息架构视图使用
4) sys,专供 SQL Server 内部使用
架构不仅用于分组。正如MSDN 所述,实际上可以为每个模式赋予不同的用户不同的权限。
这样做,上面提到的模式 lookup 可以提供给数据库中的任何标准用户(例如 SELECT 权限),而名为 supplierbankaccountdetails 的表 可以分配在一个名为 financial 的不同架构中,并且只授予组 accounts 中的用户访问权限(只是一个例子,你明白了)。
最后,再次引用同一本书:
Database Schema 和 Table Schema 不是同一个。前者是表的命名空间,后者指的是表定义