我对表格中的架构有一些疑问。
有时,当您创建表时,默认架构是dbo.TableName。 dbo是默认的模式名称吗?我相信你可以在正确创建表时更改或指定模式,因为有些表具有不同的模式,如:Sales.Tablename或Users.Roles等。我相信模式的目的是在表之间产生差异或者这样的事情?类似于C#类中的命名空间。是否可以有两个具有相同名称但具有不同模式的表,例如:Sales.Users,Marketing.Users?
答案 0 :(得分:2)
dbo是默认架构。您可以更改每个sql-login的默认架构。 如果您不小心在错误的架构中创建了一个表,则可以移动它:
- 将Peter表从Sales架构移动到Orders架构
ALTER SCHEMA订单TRANSFER Sales.peter
您可以通过在表名称之前指定表来指定要创建表的模式:
CREATE TABLE Sales.Users(id int);
模式的一个目的是创建表的逻辑组,就像C#中的名称空间一样。它们对于控制权限等也很有用。
是的,表名只需要在每个模式中都是唯一的。
答案 1 :(得分:1)
有时,当您创建表时,默认架构是dbo.TableName。是dbo 默认架构名称?
你为什么这么问?很明显,如果你把它作为默认值,dbo是默认的schame名称,或者?最重要的是,它是新数据库唯一可用的模式。
我相信你可以在正确创建表时更改或指定架构,
如果你不能使用它们,那么多个模式会有什么意义呢?并且由于create table语法清楚地表明您可以指定模式。
我认为模式的目的是在表格之间做出改变 这样的事情?类似于C#类中的命名空间。
这几乎总结了它。
是否可以有两个名称相同但架构不同的表,
你花10秒钟尝试一下呢?您是否因为尝试完全简单化的概念而受到挑战?答案是肯定的。对象名称必须是唯一的 - 在他们的模式中。