以下SQL语句中两个点的用途是什么?
select * from msdb..backupset
据我所知,这意味着从'msdb'数据库中选择名为'backupset'的表。但是两个点正在做一些不同的事情,我不明白。
答案 0 :(得分:2)
登录将在连接到的数据库上具有默认的“schema”(在您的情况下为msdb)。使用3部分名称(如[DB name]..[Object Name]
)指定对象(在您的情况下为“backupset”)省略了3部分名称中的模式名称(在您的情况下可能是“dbo”)。
数据库MyDatabase数据库上可能有MyDatabase.SchemaA和MyDatabase.SchemaB,每个模式可能有2个具有相同对象名称的独立表 - 如MyDatabase.SchemaA.MyTable和MyDatabase.SchemaB.MyTable。
如果您登录MyDatabase默认使用SchemaA,并运行SELECT * FROM MyDatabase..MyTable
,那么您将从MyDatabase.SchemaA.MyTable中选择。
如果您想从第二个表格中进行选择,则必须SELECT * FROM MyDatabase.SchemaB.MyTable
或SELECT * FROM SchemaB.MyTable
通常情况下,明确指定架构名称是一种很好的做法(而不是backupset
或MyTable
,请写dbo.backupset
或SchemaA.MyTable
答案 1 :(得分:1)
在这个由三部分组成的命名约定(即Database.schema.table)中使用两个点表示架构是默认架构(dbo)