如何获得数据库里所有表的名字

如何获得数据库里所有表的名字
   由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

posted @ 2010-03-21 15:11  贺满  阅读(942)  评论(0编辑  收藏  举报