假设我们有一个简单的查询
SELECT something
FROM name_before_dot.name_after_dot
FROM子句中点的含义是什么?
它是某种分隔符还是只是带有点的表名?
请注意,我已经搜索了SO,它的主题是在选择或在哪里讨论点,我知道它与别名相关,来自中的点对我来说仍然是一个谜。
答案 0 :(得分:2)
SELECT something
FROM name_before_dot.name_after_d
如果你真的翻译
select <column_name>
from <schema_name>.<table_name>
答案 1 :(得分:2)
Oracle documentation详细解释了这一点。
其中:
- object是对象的名称。
- schema是包含该对象的模式。模式限定符允许您引用除您自己之外的模式中的对象。必须授予您在其他模式中引用对象的权限。如果省略模式,则Oracle假定您引用自己模式中的对象 ...
因此,如您所示,只有两个部分,在from
子句中,name_before_dot
是对象所在的模式(即其所有者),而name_after_dot
是对象名。
您可以在all_objects
视图中查看所有者和对象名称。
答案 2 :(得分:0)
这是一个数据库架构。表的完整三部分名称是:
databasename.schemaname.tablename
对于用户的默认架构,您还可以省略架构名称:
databasename..tablename
您还可以指定链接服务器名称:
servername.databasename.schemaname.tablename
您可以在MSDN上了解有关将标识符用作表名的更多信息:
服务器,数据库和所有者名称称为对象名称的限定符。引用对象时,不必指定服务器,数据库和所有者。可以通过用句点标记其位置来省略限定符。对象名称的有效形式包括以下内容:
server_name.database_name.schema_name.object_name
server_name.database_name..object_name
server_name..schema_name.object_name
...服务器名OBJECT_NAME
database_name.schema_name.object_name
database_name..object_name
schema_name.object_name
OBJECT_NAME
指定所有四个部分的对象名称称为完全限定名称。在Microsoft SQL Server中创建的每个对象都必须具有唯一的完全限定名称。例如,如果它们具有不同的所有者,则在同一数据库中可以有两个名为xyz的表。
大多数对象引用使用三部分名称。默认server_name是本地服务器。默认的database_name是连接的当前数据库。默认schema_name是提交语句的用户的默认架构。除非另行配置,否则新用户的默认架构是dbo架构。