快速生成数据库字典

SELECT
    TableName=CASE WHEN C.column_id=1 THEN O.name ELSE N'' END ,
    TableDesc=ISNULL(CASE WHEN C.column_id=1 THEN PTB.[value] END,N''),
    Column_id=C.column_id,
    ColumnName=C.name ,
    PrimaryKey=ISNULL(IDX.PrimaryKey,N''),
    [IDENTITY]=CASE WHEN C.is_identity=1 THEN N'√'ELSE N'' END,
    Computed=CASE WHEN C.is_computed=1 THEN N'√'ELSE N'' END,
    Type=T.name,
    Length=C.max_length,
    Precision=C.precision,
    Scale=C.scale,
    NullAble=CASE WHEN C.is_nullable=1 THEN N'√'ELSE N'' END,
    [Default]=ISNULL(D.definition,N''),
    ColumnDesc=ISNULL(PFD.[value],N''),
    IndexName=ISNULL(IDX.IndexName,N''),
    IndexSort=ISNULL(IDX.Sort,N''),
    Create_Date=O.Create_Date,
    Modify_Date=O.Modify_date
FROM sys.columns C
    INNER JOIN sys.objects O
        ON C.[object_id]=O.[object_id]
            AND O.type='U'
            AND O.is_ms_shipped=0
    INNER JOIN sys.types T
        ON C.user_type_id=T.user_type_id
    LEFT JOIN sys.default_constraints D
        ON C.[object_id]=D.parent_object_id
            AND C.column_id=D.parent_column_id
            AND C.default_object_id=D.[object_id]
    LEFT JOIN sys.extended_properties PFD
        ON PFD.class=1
            AND C.[object_id]=PFD.major_id
            AND C.column_id=PFD.minor_id
--             AND PFD.name='Caption'  -- 字段说明对应的描述名称(一个字段可以添加多个不同name的描述)
    LEFT JOIN sys.extended_properties PTB
        ON PTB.class=1
            AND PTB.minor_id=0
            AND C.[object_id]=PTB.major_id
--             AND PFD.name='Caption'  -- 表说明对应的描述名称(一个表可以添加多个不同name的描述)
    LEFT JOIN                       -- 索引及主键信息
    (
        SELECT
            IDXC.[object_id],
            IDXC.column_id,
            Sort=CASE INDEXKEY_PROPERTY(IDXC.[object_id],IDXC.index_id,IDXC.index_column_id,'IsDescending')
                WHEN 1 THEN 'DESC' WHEN 0 THEN 'ASC' ELSE '' END,
            PrimaryKey=CASE WHEN IDX.is_primary_key=1 THEN N'√'ELSE N'' END,
            IndexName=IDX.Name
        FROM sys.indexes IDX
        INNER JOIN sys.index_columns IDXC
            ON IDX.[object_id]=IDXC.[object_id]
                AND IDX.index_id=IDXC.index_id
        LEFT JOIN sys.key_constraints KC
            ON IDX.[object_id]=KC.[parent_object_id]
                AND IDX.index_id=KC.unique_index_id
        INNER JOIN  -- 对于一个列包含多个索引的情况,只显示第1个索引信息
        (
            SELECT [object_id], Column_id, index_id=MIN(index_id)
            FROM sys.index_columns
            GROUP BY [object_id], Column_id
        ) IDXCUQ
            ON IDXC.[object_id]=IDXCUQ.[object_id]
                AND IDXC.Column_id=IDXCUQ.Column_id
                AND IDXC.index_id=IDXCUQ.index_id
    ) IDX
        ON C.[object_id]=IDX.[object_id]
            AND C.column_id=IDX.column_id
-- WHERE O.name=N'要查询的表'       -- 如果只查询指定表,加上此条件
ORDER BY O.name,C.column_id

--select * from sys.databases 

时间: 2024-08-29 04:12:40

快速生成数据库字典的相关文章

使用Navicat快速生成数据库字典

可参考地址:https://blog.csdn.net/maquealone/article/details/60764420 转载申明地址:http://blog.itpub.net/15498/viewspace-2134152 方法如下:利用mysql的information_schema 库中的COLUMNS表信息来实现例如需要导出ixinnuo_zxpt库的数据字典信息:打开Navicat,选择查询-->新建查询: select  TABLE_SCHEMA as '数据库',TABLE

自动生成数据库字典(sql2008) 转自 飘渺の云海

每次做项目的时候都要做数据字典,这种重复的工作实在很是痛苦,于是广找资料,终于完成了自动生成数据库字典的工作,废话少说,上代码. 截取一部分图片: 存储过程: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Carbe> -- Create date: <2014-09-19> -- Description: &

SQL Server2008生成数据库字典

1.我们在开发过程中可能会遇到这样的一种情况"当我们进行维护其他人的项目时或者项目的二次开发时可能会对原始的数据表进行分析",这里为大家介绍一种方便快捷生成数据库字典的方式. 我们在数据表中右键,选择属性 在名称这项添加一个"MS_Description",需要注意的是必须在数据表上添加扩展数据,数据库的扩展属性添加上没用,当然有多张数据表的时候我们要对每张数据表添加这样一个值,如果数据表多了我们这样去做是不是觉得很麻烦呢.这里我们想到使用"游标的方式&q

自动生成数据库字典(sql2008)

每次做项目的时候都要做数据字典,这种重复的工作实在很是痛苦,于是广找资料,终于完成了自动生成数据库字典的工作,废话少说,上代码. 存储过程: SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Carbe> -- Create date: <2014-09-19> -- Description: <生成数据库字

MS SQL生成数据库字典脚本

开发一个项目时都会有一个蛋疼的问题--写数据库需求文档,然后根据这个文档来建数据库,如果后来需求改了,要改数据库还要改文档,有时忙着忙着就忘改了,导致文档是过期的.那么我们自己写个脚本在数据库运行直接生产数据字典,这样只要改数据库就行了.目前在网上搜了下,发现sqlServer只有2005的生成工具,没有08的,存储过程倒是有,不过下载运行一遍到处是坑,写的也太差了,于是对脚本进行改进. -- ============================================= -- Au

不用工具生成数据库字典(转)

可能是我太落伍了,今天才知道SQL2005的扩展属性还可以这么用. 数据字典的重要性就不用多说了,再小的开发团队,甚至只有一个人,这个东西也不可或缺,否则日后发生问题那才要命 以前的数据字典都要单独拿出时间来进行整理,但问题多多,最明显的就是和数据结构的变化不同步,而且耗时费力,效果底下 但稍微有点责任心的数据库维护人员,在编辑数据库对象时,都会习惯性的编写备注描述 以前SQL2K时,表备注.字段备注都是直接写在名称后面,SQL会将这些信息保存到系统表:sysproperties 但到了SQL2

技巧 |Python 使用dict.fromkeys()快速生成一个字典

Python字典的fromkeys方法“疑惑”解析 https://blog.csdn.net/lingyunxianhe/article/details/83304002 原文地址:https://www.cnblogs.com/zwt20120701/p/12105332.html

【原创】文本工具的使用--根据数据库字段快速生成该表对应的Model类属性

在实际项目开发过程中,我们会经常碰到这样的问题:数据库表的字段按下划线命名方式都设计好了,接下来是要创建该表对应的Model类.如果我们按照数据库表中的字段,再手动敲一遍,生成对应Model类的属性.在字段少的情况下,手动创建Model类似乎没啥的.要是字段比较多,那就有点费时了.那如何快速生成数据库表字段对应的Model类呢?以下是本人的解决方案: 1.将建表语句复制到文本编辑器,如notepad++,editplus,vim等. 2.剔除其他字符串,提取字段 点击全部替换 3.下划线法转驼峰

SQL Server2005+、MySQL、Oracle 数据库字典生成工具

之前找的数据库字典生成工具基本上都依赖于 Office Com 组件,在不安装 Office的情况下无法使用.怒,于是自己用C# 写了一个. 特征如下:    一.支持的数据库 MS SQL Server 2005+.My Sql.Oracle    二.支持的文档类型 Html.CHM.Docx    三.无需安装Office即可生成 Docx 格式的Word文件    四.基于 .net framework 3.5 框架,电脑上需要安装 .net framework 3.5.