指定要查询的表时使用..(两个点)

时间:2016-06-30 17:12:28

标签: sql tsql

以下SQL语句中两个点的用途是什么?

select * from msdb..backupset

据我所知,这意味着从'msdb'数据库中选择名为'backupset'的表。但是两个点正在做一些不同的事情,我不明白。

2 个答案:

答案 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.MyTableSELECT * FROM SchemaB.MyTable

通常情况下,明确指定架构名称是一种很好的做法(而不是backupsetMyTable,请写dbo.backupsetSchemaA.MyTable

答案 1 :(得分:1)

在这个由三部分组成的命名约定(即Database.schema.table)中使用两个点表示架构是默认架构(dbo)