桌子名称中点之前的部分是什么?

时间:2014-12-23 00:19:45

标签: sql sql-server

我在Microsoft SQL Server中有一个数据库,其中表名称类似于 firstpart.secondpart 。例如,Accounts.BankTransactionBASE或CustomerService.SurveyCommentBASE。我不认为整个名称是表的名称,因为当我使用sys.tables找到数据库中表的名称时,它只给出名称的第二部分SurveyCommentBASE。请看下面的图片。

enter image description here

我有两个问题

  1. 这个名字的第一部分是什么?
  2. 我如何(更改' select * from sys.tables' sql命令)来获取 名字的第一部分和第二个名字,所以我可以 执行我的查询?

3 个答案:

答案 0 :(得分:3)

SQL Server中的命名格式为:servername.databasename.schemaname.tablename。通常只需要最后两个;除非您在多个数据库和/或服务器上工作,否则通常会将数据库名称和服务器名称省略为不必要。

在您的情况下,第一部分是模式名称,第二部分是表名称。将SQL模式和表名一起用于引用SQL Server中的表,视图等,这被认为是一种很好的做法。

答案 1 :(得分:1)

要回答第二个问题,您可以从SYS架构获取所有用户表的架构和表名:

SELECT s.name + '.' + t.name
FROM sys.schemas s JOIN sys.tables t ON t.schema_id=s.schema_id
WHERE t.type='U'

答案 2 :(得分:1)

正如其他答案已经说过的那样,表名前面的部分是模式。对您的查询进行简单编辑即可获得:

select schema_name(schema_id), * from sys.tables