SQL语句中点的含义是什么?

时间:2016-09-07 17:41:49

标签: sql oracle

假设我们有一个简单的查询

SELECT something
FROM name_before_dot.name_after_dot

FROM子句中点的含义是什么?

它是某种分隔符还是只是带有点的表名?

请注意,我已经搜索了SO,它的主题是在选择或在哪里讨论点,我知道它与别名相关,来自中的点对我来说仍然是一个谜。

3 个答案:

答案 0 :(得分:2)

SELECT something
FROM name_before_dot.name_after_d

如果你真的翻译

select <column_name>
from <schema_name>.<table_name>

答案 1 :(得分:2)

Oracle documentation详细解释了这一点。

enter image description here

  

其中:

     
      
  • 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架构。