天天看點

SQLServer查詢所有表結構

查詢指定表:

DECLARE @tablename VARCHAR(50)

SET @tablename='Bad_Badbehavior'

--檢視表結構  

SELECT  CASE WHEN col.colorder = 1 THEN obj.name  

                  ELSE ''  

             END AS 表名,  

        col.colorder AS 序号 ,  

        col.name AS 列名 ,  

        ISNULL(ep.[value], '') AS 列說明 ,  

        t.name AS 資料類型 ,  

        col.length AS 長度 ,  

        ISNULL(COLUMNPROPERTY(col.id, col.name, 'Scale'), 0) AS 小數位數 ,  

        CASE WHEN COLUMNPROPERTY(col.id, col.name, 'IsIdentity') = 1 THEN '√'  

             ELSE ''  

        END AS 辨別 ,  

        CASE WHEN EXISTS ( SELECT   1  

                           FROM     dbo.sysindexes si  

                                    INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id  

                                                              AND si.indid = sik.indid  

                                    INNER JOIN dbo.syscolumns sc ON sc.id = sik.id  

                                                              AND sc.colid = sik.colid  

                                    INNER JOIN dbo.sysobjects so ON so.name = si.name  

                                                              AND so.xtype = 'PK'  

                           WHERE    sc.id = col.id  

                                    AND sc.colid = col.colid ) THEN '√'  

             ELSE ''  

        END AS 主鍵 ,  

        CASE WHEN col.isnullable = 1 THEN '√'  

             ELSE ''  

        END AS 允許空 ,  

        ISNULL(comm.text, '') AS 預設值  

FROM    dbo.syscolumns col  

        LEFT  JOIN dbo.systypes t ON col.xtype = t.xusertype  

        inner JOIN dbo.sysobjects obj ON col.id = obj.id  

                                         AND obj.xtype = 'U'  

                                         AND obj.status >= 0  

        LEFT  JOIN dbo.syscomments comm ON col.cdefault = comm.id  

        LEFT  JOIN sys.extended_properties ep ON col.id = ep.major_id  

                                                      AND col.colid = ep.minor_id  

                                                      AND ep.name = 'MS_Description'  

        LEFT  JOIN sys.extended_properties epTwo ON obj.id = epTwo.major_id  

                                                         AND epTwo.minor_id = 0  

                                                         AND epTwo.name = 'MS_Description'  

WHERE   obj.name = @tablename 

ORDER BY col.colorder ;

SQLServer查詢所有表結構

DECLARE @tablename nvarchar(255),@Sql nvarchar(4000)  

DECLARE TName CURSOR FOR  

SELECT [name] FROM sysobjects WHERE xtype = 'U' ORDER BY name  asc

OPEN TName   

FETCH NEXT FROM TName INTO @tablename  

WHILE @@FETCH_STATUS = 0  

BEGIN  

--檢視表結構  

SELECT  CASE WHEN col.colorder = 1 THEN obj.name  

                  ELSE ''  

             END AS 表名,  

        col.colorder AS 序号 ,  

        col.name AS 列名 ,  

        ISNULL(ep.[value], '') AS 列說明 ,  

        t.name AS 資料類型 ,  

        col.length AS 長度 ,  

        ISNULL(COLUMNPROPERTY(col.id, col.name, 'Scale'), 0) AS 小數位數 ,  

        CASE WHEN COLUMNPROPERTY(col.id, col.name, 'IsIdentity') = 1 THEN '√'  

             ELSE ''  

        END AS 辨別 ,  

        CASE WHEN EXISTS ( SELECT   1  

                           FROM     dbo.sysindexes si  

                                    INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id  

                                                              AND si.indid = sik.indid  

                                    INNER JOIN dbo.syscolumns sc ON sc.id = sik.id  

                                                              AND sc.colid = sik.colid  

                                    INNER JOIN dbo.sysobjects so ON so.name = si.name  

                                                              AND so.xtype = 'PK'  

                           WHERE    sc.id = col.id  

                                    AND sc.colid = col.colid ) THEN '√'  

             ELSE ''  

        END AS 主鍵 ,  

        CASE WHEN col.isnullable = 1 THEN '√'  

             ELSE ''  

        END AS 允許空 ,  

        ISNULL(comm.text, '') AS 預設值  

FROM    dbo.syscolumns col  

        LEFT  JOIN dbo.systypes t ON col.xtype = t.xusertype  

        inner JOIN dbo.sysobjects obj ON col.id = obj.id  

                                         AND obj.xtype = 'U'  

                                         AND obj.status >= 0  

        LEFT  JOIN dbo.syscomments comm ON col.cdefault = comm.id  

        LEFT  JOIN sys.extended_properties ep ON col.id = ep.major_id  

                                                      AND col.colid = ep.minor_id  

                                                      AND ep.name = 'MS_Description'  

        LEFT  JOIN sys.extended_properties epTwo ON obj.id = epTwo.major_id  

                                                         AND epTwo.minor_id = 0  

                                                         AND epTwo.name = 'MS_Description'  

WHERE   obj.name = @tablename 

ORDER BY col.colorder ;

    FETCH NEXT FROM TName INTO @tablename  

END  

CLOSE TName  

DEALLOCATE TName

SQLServer查詢所有表結構

繼續閱讀