当前位置:首页 > 技术分析 > 正文内容

数据库教程-SQL Server数据字典查询及导出

ruisui884周前 (03-31)技术分析18

数据字典是描述数据库对象及相关信息的表与视图的集合,常见的数据库对象包括表、存储过程、触发器、视图、约束等。用户定义的数据表对应的各类信息均存储在系统表与视图中,所谓数据字典就是通过查询获取这些用户所定义表的相关信息。数据字典的最大作用是在数据库开发者与程序员之间传递信息,使得开发者能够了解具体的数据库相关信息,保证所设计开发的软件符合数据规则及约束。因此数据字典在信息管理系统开发过程中至关重要。开发者可以根据实际需求生成不同的数据字典模板,用于显示数据库不同的信息,典型数据字典模板描述如下所示:

数据字典样式一描述如上图所示,通过数据字典显示了用户数据库中对应的表名、字段名称、字段类型、字段长度等相关信息,系统开发人员可通过该字段快速理解数据库的表,字段等基本信息。可以根据需求设置其他数据字典模板,以下给出其他形式:


如何设计数据字典

数据字典简单理解就是一个查询语句,从指定的数据表或视图中查询所需的信息,如果是多表连接查询,需要注意查询连接条件。因此为获取以上模板给出的数据字典信息,需要对数据库下的系统相关视图与表进行分析,明确各系统表或者视图的作用。结合给出的数据字段模板样式,可知所需信息主要包括表、字段、数据类型、属性等。因此我们需要明确这些信息都存储在什么表中。系统表及视图较多,在数据库对象资源管理器中可浏览全部视图。部分截图如下:

我们在编写字典过程中,无需对所有视图有所了解,只需要重点了解和字典显示信息相关的视图即可。通过分析可知主要涉及视图包括以下类型,

sysobjects:有关SQL Server数据库的所有信息都存储在其系统表中,其中最有用的是sysobjects.name和sysobjects.xtype。前者表示相关对象的名称,而后者标识了对象的类型:如U类型只的是用户表。
syscolumns:存储当前数据库下所有表与视图的每一列及存储过程中的每一个参数均返回一行。其主要字段包括xusertype(字段的数据类型)、length(字段长度)、isnullable(是否为空)等。
systypes:数据表对应的物理存储类型
syscomments:包含数据库中每个视图,规则,默认值,触发器,CHECK约束,DEFAULT约束和存储过程的条目。
sysindexes:当前数据库中的每个索引和表都包含一行。
sysindexkeys:包含有关数据库索引中的键或列的信息。
sysforeignkeys:包含有关FOREIGN KEY约束的信息,这些约束位于数据库表的定义中。
sys.extended_properties:为当前数据库中的每个扩展属性返回一行。

编写数据字典所需基本系统视图说明如上所示,我们可以连接以上视图,选择需要显示的字段,完成字典格式的定义。系统视图详细解释与说明可参考微软文档信息,如下图所示:

编写查询语句

在明确所需字段来源之后,我们可以进一步编写生成字典的查询语句。在编写查询语句中为方便阅读,我们将使用系统方法及流程控制语句、重命名等措施,提高查询结果的可读性。主要使用方法描述如下:

1、ISNULL()

用于判断表达式是否为空,非空则返回表达式值。

2、COLUMNPROPERTY ( id , column , property )

用于检查指定字段的属性值,第三个参数为Scale时返回列或参数的数据类型的小数位数。

3、流程控制,多路分支语句

多路分支语句主要用于对多条件进行判断,如以下代码:

4、CONVERT()函数

数据类型转换函数,将指定的数据转为指定的数据类型。函数可提供两个参数,第一个为转换的数据类型,第二个为转换的数据。示例如下:

5、EXISTS()函数

该函数主要用于判断查询结果是否存在,如果查询结果存在则返回true,否则返回false。

6、多表连接操作

SQL Server提供多表连接,用于实现多表连接操作,常用多表连接包括内连接、外连接、左外连接、右外连接等。

三种类型连接描述如上表,数据字典需要连接的表包括syscolumns、sysobjects、systypes等。多表连接实现代码描述如下:

4、查询语句及查询结果

按照以上所提供的表信息介绍、系统函数方法等,可以编写数据字典查询语句,并将查询结果进行输出保存,实际过程也可根据需要对查询显示字段进行筛选。查询过程结果如下:

针对查询结果可以进一步使用导出保存功能实现对数据字典的保存操作。导出保存实现效果展示如下:


本头条号长期关注编程资讯分享;编程课程、素材、代码分享及编程培训。如果您对以上方面有兴趣或代码错误、建议与意见,可以联系作者,共同探讨。期待大家关注!

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/3208.html

标签: 数据库导出
分享给朋友:

“数据库教程-SQL Server数据字典查询及导出” 的相关文章

面试官:聊聊你知道的Vue与React的区别

最近面到很多大公司的时候,小编都会碰到一个很尴尬的问题,很多大公司的技术栈都是React,但是小编学的是Vue,其实从本质上来说两者都是比较优秀的前端框架,所以有些面试官会问到Vue和React的区别。小编认真整理了一些自己所知道的Vue和React的区别,给大家分享分享。1. 模板语法 vs JS...

10个实例小练习,快速入门熟练 Vue3 核心新特性(一)

作者:xuying 全栈修炼转发链接:https://mp.weixin.qq.com/s/_n2seDbbiO5hXQfuUGbUCQ前言Vue3.0 发 beta 版都有一段时间了,正式版也不远了,所以真的要学习一下 Vue3.0 的语法了。本篇文章总共分两部分,望小伙伴们认真阅读。下一篇:10...

如何在GitLab上回退指定版本的代码?GitLab回退指定版本问题分析

在Git中,回退到指定版本并不是删除或撤销之前的提交,而是创建一个新的提交,该提交包含指定版本的内容。这意味着您需要将当前代码更改与指定版本之间的差异进行比较,并将其合并到一个新的提交中。如果您没有更新本地代码,并且您希望将 GitLab 仓库回退到指定版本,您可以使用以下命令:git fetchg...

使用cgroup限制进程资源

这里使用containerd项目中的cgroup包来实现进程资源限制。先写一个耗费一个CPU并且一秒增加10m内存的测试进程package mainimport ( "fmt" "math/rand" "time")func main() { go f...

K8S NFS 共享存储

NFS 共享存储前面我们学习了 hostPath 与 Local PV 两种本地存储方式,但是平时我们的应用更多的是无状态服务,可能会同时发布在不同的节点上,这个时候本地存储就不适用了,往往就需要使用到共享存储了,比如最简单常用的网络共享存储 NFS,本节课我们就来介绍下如何在 Kubernetes...

双子座应用程序推出模型切换器以在Android上访问2.0

#头条精品计划# 快速导读谷歌推出了Gemini 2.0 Flash实验版,现已在其安卓应用中可用,之前仅在gemini.google.com网站上提供。新版本的15.50包含模型切换器,用户可以在设置中选择不同模型,包括1.5 Pro、1.5 Flash和2.0 Flash实验版。谷歌提醒,2.0...