当前位置:Gxlcms > 数据库问题 > 获取SQLSERVER所有库 所有表 所有列 所有字段信息

获取SQLSERVER所有库 所有表 所有列 所有字段信息

时间:2021-07-01 10:21:17 帮助过:6人阅读

NAME FROM MASTER..SYSDATABASES --读取所有库

上边语句只得到单表单列..里边就全是数据库的名字..

然后选择数据库后..按此数据库连接重新链接数据库..执行以下语句

SELECT NAME FROM SYSOBJECTS WHERE TYPE=U  --读取所有表

上边语句依然是得到的单表单列,存储的值全不是当前选择的数据库中的表

用户选择..得到表名..

SELECT SC.Name --查询【列名】【类型】【长度】【描述】  
    ,[TYPE] = ST.Name + CASE ST.user_type_id    
    WHEN 41 THEN (+CAST(SC.scale AS VARCHAR) +)                                       -- time  
    WHEN 42 THEN (+CAST(SC.scale AS VARCHAR) +)                                       -- datetime2  
    WHEN 43 THEN (+CAST(SC.scale AS VARCHAR) +)                                       -- datetimeoffset  
    WHEN 106 THEN (+CAST(SC.precision  AS VARCHAR)+,+ CAST(SC.scale AS VARCHAR) +)  -- decimal  
    WHEN 108 THEN (+CAST(SC.precision  AS VARCHAR)+,+ CAST(SC.scale AS VARCHAR) +)  -- numeric  
    WHEN 165 THEN (+ISNULL(CAST(NULLIF(SC.max_length,-1) AS VARCHAR),max) +)        -- varbinary  
    WHEN 167 THEN (+ISNULL(CAST(NULLIF(SC.max_length,-1) AS VARCHAR),max) +)        -- varchar  
    WHEN 173 THEN (+ISNULL(CAST(NULLIF(SC.max_length,-1) AS VARCHAR),max) +)        -- binary  
    WHEN 175 THEN (+ISNULL(CAST(NULLIF(SC.max_length,-1) AS VARCHAR),max) +)        -- char  
    WHEN 231 THEN   
        CASE SC.max_length   
        WHEN -1 THEN (max)  
        ELSE (+ISNULL(CAST(NULLIF(SC.max_length / 2,-1) AS VARCHAR),max) +)      -- nvarchar  
        END   
    WHEN 239 THEN (+ISNULL(CAST(NULLIF(SC.max_length,-1) AS VARCHAR),max) +)     -- nchar  
    ELSE ‘‘   
    END    
        ,CASE WHEN SC.Is_Nullable = 0 THEN NOT NULL                                  --是否允许为空  
        WHEN SC.Is_Nullable = 1 THEN NULL   
        ELSE UNKNOWN END IsNullable  
,(SELECT SYS.EXTENDED_PROPERTIES.VALUE FROM SYSCOLUMNS   
INNER JOIN SYS.EXTENDED_PROPERTIES ON SYSCOLUMNS.ID = SYS.EXTENDED_PROPERTIES.MAJOR_ID   
AND SYSCOLUMNS.COLID = SYS.EXTENDED_PROPERTIES.MINOR_ID   
INNER JOIN SYSOBJECTS ON SYSCOLUMNS.ID = SYSOBJECTS.ID   
WHERE SYSOBJECTS.NAME = SO.NAME AND SYSCOLUMNS.NAME = SC.NAME) Description             --SO.NAME表名、SC.NAME列名   
FROM SYS.COLUMNS SC,SYS.TYPES ST,SYS.SYSOBJECTS SO                                     --列名信息和表结构信息  
WHERE SC.user_type_id = ST.user_type_id AND SC.object_id = SO.ID AND SO.XTYPE=U AND SO.NAME=写入表名  

 

上边的语句是从网上复制过来的..先谢过那位大神了..

在语句中只要在最后写入表名..即可得到一张四列的表..分别是 字段名/字段类型/是否为空/备注

这四个东西基本上就是生成代码的最重要四个元素了..缺一不可..

在之后就是循环就好了..循环生成读模板..绑数据..

 

获取SQLSERVER所有库 所有表 所有列 所有字段信息

标签:

人气教程排行