巧用SQL语句查看SQL Server的结构信息

发布时间:2025-05-23 13:16:49 作者:益华网络 来源:undefined 浏览量(0) 点赞(0)
摘要:常用SQLServer的朋友们,绝大部分情况下,我们写SQL脚本主要用来处理我们自己的数据,比如读取、插入数据等。但在有些情况下,我们可能要查看我们定义的一些元素,比如我们定义的表都有哪些、表结构如何、存储过程的源码等等。这时候,我们学习的常规的SQL脚本可能就无法处理了。 比

 常用SQLServer的朋友们,绝大部分情况下,我们写SQL脚本主要用来处理我们自己的数据,比如读取、插入数据等。但在有些情况下,我们可能要查看我们定义的一些元素,比如我们定义的表都有哪些、表结构如何、存储过程的源码等等。这时候,我们学习的常规的SQL脚本可能就无法处理了。

比如您要写一个管理数据库的程序,就要知道数据库中有什么表、表结构如何,以及视图、存储过程的脚本源码等。下面我就说说如何获取数据库的结构信息。

获取数据库及配置信息

1、获取数据库配置信息

exec sp_server_info  

2、返回所有数据库

exec sp_databases  

获取系统中的用户表

有三种方法可以使用,分别是:

1、利用sysobjects系统表或sys.objects目录视图

select * from sysobjects where xtype=U  select * from sys.objects where xtype=U  

2、利用sys.tables目录视图

select * from sys.tables  

3、利用存储过程sp_tables

exec sp_tables  

获取系统中所有的用户视图

有两种方法可以使用,分别是:

1、利用sysobjects系统表或sys.objects目录视图

select * from sysobjects where xtype=V  select * from sys.objects where xtype=V

2、利用sys.tables目录视图

select * from sys.tables  

获取数据库中所有的用户存储过程

有两种方法可以使用,分别是:

1、利用sysobjects系统表或sys.objects目录视图

select * from sysobjects where xtype=P  select * from sys.objects where xtype=P  

2、利用sys.procedures目录视图

select * from sys.procedures  

获取存储过程或视图的定义脚本

要用到系统视图sys.all_objectssys.sql_modules,写法如下:

select a.name,a.[type],b.[definition]   from sys.all_objects a,sys.sql_modules b  where a.is_ms_shipped=0 and a.object_id = b.object_id and a.[type] in (P,V)  order by a.[name] asc 

其中 sys.all_objects 是 sql server 2012 版本中的系统视图,在 更早期的 sql server 版本中,应该用 sys.objects,同时,sys.objects 在 2012 中也是可以用的,只不过考虑到后续兼容性,在新版本中,用新的 name 还是比较好。

sys.all_objects.type字段常用的类型有: P = 存储过程、V = 视图、U = 表(用户定义类型)、TT = 表类型 、AF = 聚合函数等。

sys.sql_modules.definition返回的就是定义存储过程或视图的脚本

获取表的字段信息

1、如果单纯获取字段名称,只需要用到系统表syscolumns

select * from syscolumns where id=object_id(表名)  

2、如果要获取字段和对应的数据类型,需要用到系统表syscolumnssystypes

select a.name as [column],b.name as type   from syscolumns a,systypes b   where a.id=object_id(表名) and a.xtype=b.xtype

3、获取更详细的表结构信息,调用[INFORMATION_SCHEMA].[COLUMNS]

SELECT c.TABLE_SCHEMA ,   c.TABLE_NAME ,   c.COLUMN_NAME ,   c.DATA_TYPE ,   c.CHARACTER_MAXIMUM_LENGTH ,   c.COLUMN_DEFAULT ,   c.IS_NULLABLE ,   c.NUMERIC_PRECISION ,   c.NUMERIC_SCALE  FROM [INFORMATION_SCHEMA].[COLUMNS] c  WHERE TABLE_NAME = idata

如果您能够活用这些系统内置的表、视图和存储过程,您总可以找到方法方便的查到想要知道的数据元素信息。

希望对您有所帮助! 

二维码

扫一扫,关注我们

声明:本文由【益华网络】编辑上传发布,转载此文章须经作者同意,并请附上出处【益华网络】及本页链接。如内容、图片有任何版权问题,请联系我们进行处理。

感兴趣吗?

欢迎联系我们,我们愿意为您解答任何有关网站疑难问题!

您身边的【网站建设专家】

搜索千万次不如咨询1次

主营项目:网站建设,手机网站,响应式网站,SEO优化,小程序开发,公众号系统,软件开发等

立即咨询 15368564009
在线客服
嘿,我来帮您!