当前位置: 澳门新濠3559 > 数据库 > 正文

——通过知识共享树立个人品牌,澳门新濠3559

时间:2019-10-12 05:01来源:数据库
1.收获数据库中的表    在多数气象下,大家开垦都亟待有一个飞跃的代码生成工具用来拉长支付作用,代码生成工具非常多音信都是读取数据库的表、视图等元数据开展对象表新闻的

1.收获数据库中的表

 

 在多数气象下,大家开垦都亟待有一个飞跃的代码生成工具用来拉长支付作用,代码生成工具非常多音信都是读取数据库的表、视图等元数据开展对象表新闻的周密,有了这一个音信,大家就足以在平时的实体类代码里面增加属性字段的汉语注释,只怕在Winform或许Web分界面的全速变动的时候,能够在查询框恐怕分界面编辑的时候,充作标签提醒等拍卖消息。但是,日常情状下视图的备注音讯是绝非的,可是视图和表之间是存在必然的关联的,即使分歧数据库系统对此它们的新闻对应不自然一致,可是大家得以把它们的附和关系搜索出来就足以给视图字段扩大备注了,这么些就是本文介绍的思绪和做法了,本篇结合介绍代码生成工具Databae2Sharp的拍卖实现进行讲明怎么样得到视图中字段对应的备注消息。

select name from sysobjects where type='U'

推荐】Sql Server 不分布应用之一

1、SQLServer数据库的视图新闻管理

咱俩为了演示视图的管理,大家需求成立四个表,以致视图的音讯,首先大家成立一个顾客音讯表,如下所示。

澳门新濠3559 1

澳门新濠3559 2

咱俩期待那个T_Customer表中的Creator字段和客户表进行关联,然后大家增多三个视图,个中的视图代码如下所示。

SELECT     dbo.T_Customer.ID, dbo.T_Customer.Name, dbo.T_Customer.Age, dbo.T_Customer.Creator, dbo.T_Customer.CreateTime, dbo.Users.UserName
FROM         dbo.T_Customer INNER JOIN
dbo.Users ON dbo.T_Customer.Creator = dbo.Users.ID

也便是列出T_Customer的字段,乃至三个Users表中的Username字段,也就是关联了多少个表的视图,获取那几个表的数目如下所示。

澳门新濠3559 3

好了,到此地大家基本就打算好前提条件了,剩下的正是怎么着收获那个视图的音信了。

——通过知识共享树立个人品牌,澳门新濠35595.获取一个表的表名。在SQLServer里面,大家只要急需获得顾客视图的信息,那么通过系统的视图就足以获取到了,如下所示。

澳门新濠3559 4

其一正是视图的称号和视图SQL代码了,大家假如须求详细获取视图的字段音信,这个还相当不足,大家得以依照视图音信更为列出顾客视图和具体表的关联,如下所示。

澳门新濠3559 5

从上海体育场地大家就足以看见这么些视图字段和表的字段的顺序对应涉及了,也等于足以因而具体表的字段音信,蕴含大家这里特别关注的备考音讯了。

比如依据那么些原理,我们视图就径直从数据库表字段中领到备注新闻了,进而完成视图备注字段的机关提取,缩小人工设置的累赘和困难。

澳门新濠3559 6

 

2.到石英钟字段(此处是Route表)

赢得表的中央消息、字段列表、存款和储蓄进度参数列表

2、Oracle数据库视图音讯的拍卖

澳门新濠3559,在Oracle里面包车型地铁视图字段音讯管理,和SQLServer有所分化,因为大家很难找到视图字段和表字段的次第对应提到的视图消息,由此有个别困难。

在Oracle里面我们先筹算好一个T_Customer表,以至视图等基础音讯先。

澳门新濠3559 7

同有时间创建三个视图和客户表发生涉及,和在SQLServer同样的做法,SQL如下所示。

create or replace view view_customer as
select u.fullname, t.id, t.name, t.age, t.creator, t.createtime from t_customer t inner join t_acl_user u on t.creator = u.id;

咱们透过Oracle的系统视图ALL_TAB_COLUMNS或者DBA_TAB_COLUMNS能够猎取视图的字段音信,如下所示。

澳门新濠3559 8

可是非常不佳,这几个视图的音信尚未和视图关联表产生任何的因陋就简,不能赢获得相应的表音讯,那么哪些赢得视图对应表的音讯呢,答案是能够通过ALL_DEPENDENCIES这一个视图进行获取,如下图所示。

澳门新濠3559 9

只是此间也只是取获得相应的表,未有和字段关联,不过尔尔基本上也大半了,因为大家能够获得视图字段,以致那几个视图里面包含的关联表,那么基本上它的字段新闻也大致锁定了,除非多个表之间比较多字段名称一致,难以管理。

组成上边包车型地铁SQL,大家得以得到表和字段的新闻了,如下所示。

select distinct table_name, column_name from all_tab_columns where table_name in 
 (select referenced_name from all_dependencies where name='VIEW_CUSTOMER' and type = 'VIEW' and referenced_type = 'TABLE')  
  and column_name in (select column_name from all_tab_columns where table_name='VIEW_CUSTOMER') order by table_name; 

澳门新濠3559 10

那样我们依照视图对应表的字段消息,相配它的备考信息就差不离了,最后我们来看看基于Oracle的落实际效果果与利益。

澳门新濠3559 11

澳门新濠3559 12

从上图大家得以见到,代码工具Database2Sharp,依照上述介绍的逻辑关系,自动从表对应的字段里面去匹配成对应的备注新闻,进而裁减手工业安装视图字段备注新闻的繁杂职业,为视图代码生成和界面生成升高了速度和频率。

如上的视图备注消息的提取逻辑,大家得以把它利用在大团结的事务处理此中,达成越来越宽广的行使。

以上视图备注音信的提取要求,来自二个客商的建议,十分不利,在那感激他为这几个细节做出的贡献。

Select name from syscolumns Where ID=OBJECT_ID('Route')

 

3.到机械钟中字段的描述

——通过文化分享树立个人牌子。

SELECT   value  FROM   ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', 'Route', 'column', default)

 

4.赢得表的音信的有所音信如下图

  

select   b.[value] from sys.columns a left join sys.extended_properties b on a.object_id=b.major_id
and a.column_id=b.minor_id inner join sysobjects c on a.column_id=c.id
and a.[name]='列名' and c.[name]='表名'
SELECT
表名=case   when   a.colorder=1   then   d.name   else   ''   end,
表说明=case   when   a.colorder=1   then   isnull(f.value,'')   else   ''   end,
字段序号=a.colorder,
字段名=a.name,
标识=case   when   COLUMNPROPERTY(   a.id,a.name,'IsIdentity')=1   then   '√'else   ''   end,
主键=case   when   exists(SELECT   1   FROM   sysobjects   where   xtype='PK'   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,
占用字节数=a.length,
长度=COLUMNPROPERTY(a.id,a.name,'PRECISION'),
小数位数=isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0),
允许空=case   when   a.isnullable=1   then   '√'else   ''   end,
默认值=isnull(e.text,''),
字段说明=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='orders'         --如果只查询指定表,加上此条件
order   by   a.id,a.colorder

 

 

如下图

一、获取表的中坚新闻

澳门新濠3559 13

SELECT [TableName] = [Tables].name ,

        [TableOwner] = [Schemas].name ,

        [TableCreateDate] = [Tables].create_date ,

        [TableModifyDate] = [Tables].modify_date

FROM    sys.tables AS [Tables]

        INNER JOIN sys.schemas AS [Schemas] ON [Tables].schema_id = [Schemas].schema_id

WHERE   [Tables].name = '案卷目录'

 

 

5.取得一个表的表名,字段名,数据类型,字段表明的简写SQL:

功能如图一所示:

SELECT 
    --表名
    [TableName] = i_s.TABLE_NAME, 
    --列名
    [ColumnName] = i_s.COLUMN_NAME, 
    --字段描述
    [Description] = s.value,
    --数据类型
    [DataType]=i_s.DATA_TYPE ,
    --是否是主键
    [IsPrimaryKey]=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and name in (
                SELECT   name   FROM   sysindexes   WHERE   indid   in(
                    SELECT   indid   FROM   sysindexkeys   WHERE   id   =   a.id   AND   colid=a.colid
                )))   then   '1'   else   '0'   end
    FROM 
    INFORMATION_SCHEMA.COLUMNS i_s 
    LEFT OUTER JOIN sys.extended_properties s ON 
                        s.major_id = OBJECT_ID(i_s.TABLE_SCHEMA '.' i_s.TABLE_NAME) 
                       AND s.minor_id = i_s.ORDINAL_POSITION
                        AND s.name = 'MS_Description' 
    INNER JOIN     syscolumns a ON a.id=s.major_id AND a.colid=s.minor_id

    WHERE OBJECTPROPERTY(OBJECT_ID(i_s.TABLE_SCHEMA '.' i_s.TABLE_NAME), 'IsMsShipped')=0 
          AND i_s.TABLE_NAME = 'BusRoute' AND i_s.TABLE_SCHEMA='office'
          ORDER BY i_s.TABLE_NAME, i_s.ORDINAL_POSITION

 

 

澳门新濠3559 14

 

 

 

 

 

 

图一 钦命表的焦点音讯

 

二、遵照表名获取字段列表

 

SELECT [ColumnName] = [Columns].name ,

        [SystemTypeName] = [Types].name ,

        [Precision] = [Columns].precision ,

        [Scale] = [Columns].scale ,

        [MaxLength] = [Columns].max_length ,

        [IsNullable] = [Columns].is_nullable ,

        [IsRowGUIDCol] = [Columns].is_rowguidcol ,

        [IsIdentity] = [Columns].is_identity ,

        [IsComputed] = [Columns].is_computed ,

        [IsXmlDocument] = [Columns].is_xml_document ,

        [Description] = [Properties].value

FROM    sys.tables AS [Tables]

        INNER JOIN sys.columns AS [Columns] ON [Tables].object_id = [Columns].object_id

        INNER JOIN sys.types AS [Types] ON [Columns].system_type_id = [Types].system_type_id

                                           AND is_user_defined = 0

                                           AND [Types].name <> 'sysname'

        LEFT OUTER JOIN sys.extended_properties AS [Properties] ON [Properties].major_id = [Tables].object_id

                                                              AND [Properties].minor_id = [Columns].column_id

                                                              AND [Properties].name = 'MS_Description'

WHERE   [Tables].name =案卷目录

ORDER BY [Columns].column_id

 

效果如图二所示:

澳门新濠3559 15

 

 

 

 

图二 内定表的字段列表消息

 

 

三、获取钦点期存款储进度参数列表

 

SELECT sc.name AS 参数名 ,

        st.name AS 类型 ,

        sc.length AS 长度

FROM    syscolumns sc

        INNER JOIN sysobjects so ON so.id = sc.id

        INNER JOIN systypes st ON sc.xtype = st.xtype

WHERE   so.name = 'SP_Pagination'

职能如图三所示: 

澳门新濠3559 16

图三 内定期存款款和储蓄进度的参数列表

编辑:数据库 本文来源:——通过知识共享树立个人品牌,澳门新濠3559

关键词: 澳门新濠3559