查询数据库中所有表和视图,查询出指定表的信息


BEGIN TRAN 事物名



IF(@@ERROR<>0)BEGIN ROLLBACK TRAN  事物名;RETURN;END



COMMIT TRAN  事物名

 

--查询出数据库中所有表

SELECT name  FROM dbo.sysobjects WHERE OBJECTPROPERTY(id, N'IsUserTable') = 1 ORDER BY name 

--查询出数据库中所有视图

SELECT name FROM sysobjects WHERE xtype='V' AND name <> 'dtproperties' ORDER BY name ASC

---查询出数据库表信息

SELECT   

列序号=   A.COLORDER, 

列名 =   A.NAME, 

主键 =   CASE   WHEN   EXISTS(SELECT   1   FROM   SYSOBJECTS   

WHERE   XTYPE= 'PK '   AND   PARENT_OBJ=A.ID   AND   NAME   IN   ( 

SELECT   NAME   FROM   SYSINDEXES   WHERE   INDID   IN( 

SELECT   INDID   FROM   SYSINDEXKEYS   WHERE   ID   =   A.ID   AND   COLID=A.COLID)))   

THEN   '√ '   ELSE   ' '   END, 

类型               =   B.NAME, 

允许空           =   CASE   WHEN   A.ISNULLABLE=1   THEN   '√ 'ELSE   ' '   END,  

列说明       =   ISNULL(G.[VALUE], ' ') 

FROM SYSCOLUMNS   A 

LEFT  JOIN SYSTYPES   B ON  A.XUSERTYPE=B.XUSERTYPE 

INNER   JOIN  SYSOBJECTS   D ON  A.ID=D.ID     AND   D.XTYPE= 'U '   AND     D.NAME <> 'DTPROPERTIES ' 

LEFT   JOIN SYSCOMMENTS   E   ON A.CDEFAULT=E.ID 

LEFT   JOIN   sys.extended_properties   G ON  A.ID=G.major_id   AND   A.COLID=G.minor_id     

LEFT   JOIN  sys.extended_properties   F  ON D.ID=F.major_id   AND   F.minor_id=0 

WHERE (D.name='输入表名')

ORDER BY A.ID,A.COLORDER 



---查询出所有视图信息

SELECT 列序号=A.COLORDER,

列名=A.NAME,

主键 =   CASE   WHEN   EXISTS(

SELECT   1   FROM   SYSOBJECTS   WHERE   XTYPE= 'PK ' AND PARENT_OBJ=A.ID  

 AND   NAME   IN   ( 

SELECT   NAME   FROM   SYSINDEXES   WHERE   INDID   

IN( 

SELECT   INDID   FROM   SYSINDEXKEYS   WHERE   ID   =   A.ID   AND   COLID=A.COLID

)

)

) 

  THEN   '√ '   ELSE   ' '   END,

类型 =B.NAME, 

允许空 = CASE   WHEN   A.ISNULLABLE=1   THEN   '√ 'ELSE   ' '   END,  

列说明 =   ISNULL(G.[VALUE], ' ') 

FROM SYSCOLUMNS   A 

LEFT  JOIN SYSTYPES   B ON  A.XUSERTYPE=B.XUSERTYPE 

INNER   JOIN  SYSOBJECTS   D ON  A.ID=D.ID     AND   d.xtype='V'   AND     D.NAME <> 'dtproperties ' 

LEFT   JOIN SYSCOMMENTS   E   ON A.CDEFAULT=E.ID 

LEFT   JOIN   sys.extended_properties   G ON  A.ID=G.major_id   AND   A.COLID=G.minor_id     

LEFT   JOIN  sys.extended_properties   F  ON D.ID=F.major_id   AND   F.minor_id=0 

WHERE (D.name='输入视图名' ) 

GROUP BY

A.ISNULLABLE

,A.COLORDER

,A.COLID

,A.NAME

,B.NAME

,ISNULL(G.[VALUE], ' ') 

,A.ID

ORDER   BY   

A.ID,A.COLORDER 

 

你可能感兴趣的:(数据库)