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