首页 > 数据库 >根据数据库表生成数据字典

根据数据库表生成数据字典

时间:2023-09-25 09:56:50浏览次数:34  
标签:index IDX IDXC 数据库 object 生成 id tt 字典

sql server数据库

SELECT 表名=CASE WHEN tt.column_id=1 THEN is_name ELSE N'' END,
       字段序号=tt.column_id,
       字段名称=is_cname,
       字段描述=ISNULL(is_value,N''),
       主键=ISNULL(tt.PrimaryKey,N''),
       是否递增=CASE WHEN tt.is_identity=1 THEN N'√'ELSE N'' END,
       是否计算=CASE WHEN tt.is_computed=1 THEN N'√'ELSE N'' END,
       数据类型=tt.name,
       允许空值=CASE WHEN tt.is_nullable=1 THEN N'√'ELSE N'' END,
       默认值=ISNULL(tt.definition,N''),
       索引名称=ISNULL(tt.IndexName,N''),
       索引类型=ISNULL(tt.Sort,N'')
FROM (
    INFORMATION_SCHEMA.TABLES t
        INNER JOIN INFORMATION_SCHEMA.COLUMNS c ON t.TABLE_NAME = c.TABLE_NAME AND t.TABLE_TYPE = 'BASE TABLE'
            INNER JOIN (
                SELECT  O.name AS is_name,PTB.value,C.column_id,C.name AS is_cname,PFD.value AS is_value,IDX.PrimaryKey,C.is_identity,C.is_computed,T.name,C.max_length,C.precision,C.scale,
                        C.is_nullable,D.definition,IDX.IndexName,IDX.Sort,O.Create_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
                        LEFT JOIN sys.extended_properties PTB ON PTB.class=1 AND PTB.minor_id=0 AND C.[object_id]=PTB.major_id
                        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 (
                                            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
            ) tt on c.TABLE_NAME = tt.is_name AND tt.is_cname = c.COLUMN_NAME
)
ORDER BY is_name,tt.column_id ASC;

mysql 数据库

SELECT
    t.TABLE_NAME AS '表名',
    t.COLUMN_NAME AS '字段名称',
    t.COLUMN_COMMENT AS '字段描述',
    CASE t.COLUMN_KEY WHEN 'PRI' THEN '√' ELSE ' ' END AS '主键',
    t.COLUMN_TYPE AS '数据类型',
    t.CHARACTER_OCTET_LENGTH AS '最大长度(byte)',
    CASE IFNULL(t.COLUMN_DEFAULT,'Null') 
        WHEN '' THEN '空字符串' 
        WHEN 'Null' THEN 'NULL' 
        ELSE t.COLUMN_DEFAULT END  AS '默认值',
    CASE t.IS_NULLABLE WHEN 'YES' THEN '是' ELSE '否' END AS '是否允许为空'
FROM information_schema.COLUMNS t 
WHERE t.TABLE_SCHEMA='数据库名';-- 替换为要查询的数据库名

 

标签:index,IDX,IDXC,数据库,object,生成,id,tt,字典
From: https://www.cnblogs.com/wuyabaibsd/p/17727224.html

相关文章

  • PostgreSQL教程:SQL案例(创建用户、创建数据库、创建schema、赋权)
    需求构建一个用户构建一个数据库在这个数据库下构建一个schema(数据库默认有一个public的schema)将这个schema的权限赋予用户在这个schema下构建一个表将表的select,update,insert权限赋予用户实现--准备用户createuserlaozhengwithpassword'laozheng';--准备数据库createda......
  • Linux Centos7 虚拟环境安装Mysql数据库(超详细图文讲解)
    1、进入Centos7虚拟机,使用wget下载Mysql相应的rpm包下载:wgethttp://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm如果没有wget命令,可以使用yum安装,yuminstallwget2、执行rpm命令,安装rpmrpm-ivhmysql57-community-release-el7-8.noarch.rpm 3、安装Mys......
  • postman:添加字典中包含字典的断言
    From: https://www.cnblogs.com/hanmk/p/10171062.html----------------------------------------------------------------------------如果字典中嵌套了列表或者字典,则按照索引引用即可,反正要看清响应内容的格式......
  • uniapp 小程序生成erweima
    下载uqrcode.js文件https://download.csdn.net/download/weixin_46162592/88215531?spm=1001.2014.3001.5503下载好后,将文件夹放置common文件中,这个放置位置看你们自己需求,一般是common里面。importuQRCodefrom'@/common/uqrcode.js'html<template><view><canvas......
  • kubepi加入集群,生成token
    防丢失https://www.cnblogs.com/Chinori/p/17506348.html kubectlcreatesakubepi-user--namespacekube-systemkubectlcreateclusterrolebindingkubepi-user--clusterrole=cluster-admin--serviceaccount=kube-system:kubepi-userkubectl-nkube-systemcreatetoke......
  • 238_OMG!用它!春节贺卡一键生成!
    这是一篇原发布于2020-01-2519:18:00得益小站的文章,备份在此处。新春快乐今天是大年初一,轶哥在这里祝大家新春快乐,合家幸福,万事如意,梦想成真。虽然晚上9:46的时间有些晚了,但轶哥对大家的祝福不晚。今天介绍的工具就是凡科快图啦,上面的海报就是用它做出来的,非常精美不是吗?—......
  • Global Mapper(地图绘制)下载_生成地形图 各个版本下载
    GlobalMapper21是一款实用的桌面GIS应用程序,包含丰富的空间数据处理工具、3D渲染和高程工具、地形修改工具和GPS数据管理工具等,可以将数据转化成光栅地图、高程地图或矢量地图,同时还具有GIS数据的编辑、转换、打印和记录等功能,支持超过250种文件格式。GlobalMapper21带来了新的......
  • mybatis plus生成的日期时间格式LocalDateTime与String的相互转换
    mybatisplus生成的日期时间格式为LocalDateTime LocalDateTime转为String:将现在的时间转StringStringnowDate=LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-ddHH:mm:ss"))  将指定的String日期转DatetimeLocalDateTimeldatetime=Lo......
  • Hugging News #0918: Hub 加入分类整理功能、科普文本生成中的流式传输
    每一周,我们的同事都会向社区的成员们发布一些关于HuggingFace相关的更新,包括我们的产品和平台更新、社区活动、学习资源和内容更新、开源库和模型更新等,我们将其称之为「HuggingNews」。本期HuggingNews有哪些有趣的消息,快来看看吧!......
  • Linux数据库备份:高效使用mysqldump工具
    在现代企业管理中,数据库是企业重要的数据资产linux备份数据库,因此备份数据库显得尤为重要。Linux系统下有各种不同的工具可以用于备份数据库,其中最常用的是mysqldump工具。在本文中,我们将介绍如何使用mysqldump工具备份MySQL数据库,并探讨其他备份工具和备份策略。1.安装与......