前言:
此时各位老铁们对“sql server 查询语句”都比较讲究,咱们都需要了解一些“sql server 查询语句”的相关内容。那么小编同时在网摘上搜集了一些关于“sql server 查询语句””的相关知识,希望朋友们能喜欢,小伙伴们快快来学习一下吧!常用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 type='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 type='V'
2、利用sys.views目录视图
select * from sys.views获取数据库中所有的用户存储过程
有两种方法可以使用,分别是:
1、利用sysobjects系统表或sys.objects目录视图
select * from sysobjects where xtype='P'select * from sys.objects where type='P'
2、利用sys.procedures目录视图
select * from sys.procedures获取存储过程或视图的定义脚本
要用到系统视图sys.all_objects和sys.sql_modules,写法如下:
select a.name,a.[type],b.[definition] from sys.all_objects a,sys.sql_modules bwhere 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、如果要获取字段和对应的数据类型,需要用到系统表syscolumns和systypes。
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_SCALEFROM [INFORMATION_SCHEMA].[COLUMNS] cWHERE TABLE_NAME = '表名'
如果您能够活用这些系统内置的表、视图和存储过程,您总可以找到方法方便的查到想要知道的数据元素信息。
希望对您有所帮助!
标签: #sql server 查询语句