如何获得数据库里所有表的名字
由SQL Server管理的每个数据库里都有一个名为sysobjects的视图,它是system级别的,
所以它的全限定名是——sys.sysobjects 这张表里存储的不光是数据库里的表,它存储的是
一个数据库中所有的“对象”——包括了表的主键、存储过程、触发器等等,一共是24种——表
(Table,确切地说是“用户自定义表”)只是这24种对象中的一种:
执行下面的查询语句,可以得到所有包含在sys.sysobjects视图里的数据
SELECT * FROM sys.sysobjects
得出数据后,注意名为type的列——这一列标明了对象的类型,也就是前面提到的24种。
type
AF = Aggregate function (CLR)
C = CHECK constraint
D = DEFAULT (constraint or stand-alone)
F = FOREIGN KEY constraint
FN = SQL scalar function
FS = Assembly (CLR) scalar function
FT = Assembly (CLR) table-valued function
IF = SQL inline table-valued function
IT = Internal table
P = SQL stored procedure
PC = Assembly (CLR) stored procedure
PK = PRIMARY KEY constraint
R = Rule (old-style, stand-alone)
RF = Replication-filter-procedure
S = System base table
SN = Synonym
SQ = Service queue
TA = Assembly (CLR) DML trigger
TF = SQL table-valued-function
TR = SQL DML trigger
U = Table (user-defined)
UQ = UNIQUE constraint
V = View
X = Extended stored procedure
我们要得到名称的表(用户自定义表)就是类型为“U”的对象;而sys.objects的类型为“S”。所以,
SQL语句应该是——
SELECT name FROM sys.sysobjects WHERE type='U'
GO