master..sysdatabases和test..sysobjects是什么意思?

时间:2014-07-22 20:07:44

标签: sql-server

我正在学习如何最近使用SQL服务器。我不明白为什么在以下语句中使用master..sysdatabases和test..sysobjects:

select name from [master]..[sysdatabases] where dbid=1;
select count(1) from [test]..[sysobjects] where xtype = 'U';

计数(1)中的1是什么意思?这是否意味着第一列? 感谢您提供任何有用的答案。

1 个答案:

答案 0 :(得分:0)

您的第一行基本上获取主数据库的名称(它查看所有数据库的列表,并返回ID为1的数据库的名称,在这种情况下通常为'master')

执行a查看服务器上的所有数据库:

SELECT * FROM [master]..[sysdatabases]

请注意,“dbid”= 1的行是“master”数据库的行,该数据库是所有SQL Server实例上的系统数据库。

第二行计算名为'test'的数据库中sysobjects集合中的行数,其中type是用户表(即不是存储过程,而不是系统表等)。

在表达式“[x] .. [y]”中,'x'是数据库的名称,'y'是该数据库中表或视图的名称。

如果你有一个名为“Foo”的数据库,并且有一个名为“Bar”的表,那么这个语句将返回该表中的行数:

SELECT COUNT(1) FROM [Foo]..[Bar]

正如上面描述的Ed Gibbs所说,'1'只是一个占位符,可以在任何可能的数据库或版本上以最有效的方式计算总行数。它已成为一种简单的计算方式。