【问题标题】:Naming of tables in database in SQL ServerSQL Server 数据库中表的命名
【发布时间】:2019-09-24 06:54:17
【问题描述】:

我将我的表命名为EmployeeDepartment,而在MSSMS 中它分别显示为dbo.Employeedbo.Department,如果我使用它们中的任何一个,查询都有效,为什么会这样?

【问题讨论】:

  • dbo 表示schema name
  • Url: stackoverflow.com/questions/22481820/… 每个表都必须属于 SQL Server 中的一个模式;一个遗留假设是 dbo 是默认值,这听起来像是您的迁移脚本将所有表分配给了。您需要确保连接到 SQL 数据库的帐户可以访问 dbo 架构。
  • 如果你问的是微软的sql-server,为什么这个问题被标记为mysql?它们是两种完全不同的产品

标签: sql-server ssms


【解决方案1】:

dbo 架构是您在 SQL Server 中创建表、视图等时的默认架构

当您创建表时,它将被放置在默认架构中,您可以将其称为 dbo.tableName 或只是 tableName

Schemas

SQL Server 附带十个与内置数据库用户和角色同名的预定义架构。这些存在主要是为了向后兼容。如果不需要,可以删除与固定数据库角色同名的模式。

您不能删除以下模式:

默认架构:

  • dbo
  • 客人
  • 系统
  • INFORMATION_SCHEMA

欲了解更多信息,请参阅:Microsoft SQL Server schemas

您也可以创建架构以更好地管理您的对象。

【讨论】:

  • 从你引用的文本中(来自没有归属的地方):“如果你不这样做,你可以删除与固定数据库角色同名的模式需要他们。” (我的重点)。你的下一句话:“你不能放弃那些模式”。导致一个非常混乱的答案
  • 我编辑了,您不能删除以下架构
【解决方案2】:

dbo 是所谓的schema。这类似于文件夹。

每个表、视图、过程等总是被放入一个模式中。 但如果您不指定架构,则使用dbo

【讨论】:

  • 如果您不指定架构,则使用您的 默认架构。大多数用户都设置了 dbo 的默认架构,但他们不需要。
猜你喜欢
  • 2016-01-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-20
  • 2012-09-11
  • 1970-01-01
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
相关资源
最近更新 更多