【整理】SQLServer查询各种数据库对象(表,索引,视图,图表,存储过程等)

首先明确数据库对象的定义:数据库对象定义数据库内容的结构。它们包含在数据库项目中,数据库项目还可以包含数据生成计划和脚本。

常见的数据库对象包括:表,索引,视图,图表,缺省值,规则,触发器,存储过程,函数等

1.sys.objects视图

数据库中创建的每一个对象都对应表中的一行,但不包括DDL触发器,查询触发器应该使用sys.triggers

常见的不同类型对象在sys.objects中的区分:

类型 type列 type_desc列
FOREIGN KEY 约束 F FOREIGN_KEY_CONSTRAINT
SQL 标量函数 FN SQL_SCALAR_FUNCTION
SQL 内联表值函数 IF SQL_INLINE_TABLE_VALUED_FUNCTION
内部表 IT INTERNAL_TABLE
SQL 存储过程 P SQL_STORED_PROCEDURE
PRIMARY KEY 约束 PK PRIMARY_KEY_CONSTRAINT
系统基表 S SYSTEM_TABLE
SQL 表值函数 TF SQL_TABLE_VALUED_FUNCTION
表(用户定义类型) U USER_TABLE
UNIQUE 约束 UQ UNIQUE_CONSTRAINT
视图 V View

因此查询数据库中包含的对象可以直接查询sys.objects视图,比如:查询数据库中所有的视图

1 SELECT * FROM sys.objects WHERE type = ‘U‘

由于对象id在对应数据库中是唯一的,可以在查询时联结其他表或视图,比如:查询数据库中所有存储过程及其内容

1 SELECT O.name, M.definition FROM sys.objects O
2 JOIN sys.sql_modules M ON M.object_id = O.object_id
3 WHERE O.type = ‘P‘

2.其他查询方法

存储过程有单独的系统视图sys.procedures,基本等价于sys.objects WHERE type = ‘P‘

另外还可以执行系统sp查询存储过程:EXEC sp_stored_procedures,不同的是:

sys.procedures (或sys.objects WHERE type = ‘P‘)只包含用户存储过程,但执行sp_stored_procedures可以查询所有种类的存储过程和除了系统函数之外的所有函数

3.sys.modules视图

为每个包含 SQL 语言定义模块的系统对象返回一行,类型为 FN、IF、P、PC、TF 和 V 的系统对象具有关联的 SQL 模块。

因此,对于这些类型的对象,可以联结sys.objects查询对象的语言定义模块,即其内容。

4.sp_helptext需要注意的

sp_helptext是使用频率非常高的系统存储过程,使用它可以快速列出指定名称存储过程或函数的内容,但是有如下缺点:

①格式化代码

②当一行长度超过一定后,分行显示

这样当修改存储过程或函数时,如果使用sp_helptext很可能导致格式错乱,对于下一次的代码阅读造成很大的麻烦。

因此,建议sp_helptext仅限于查看存储过程或函数的内容。

另外,加密的存储过程不能通过sp_helptext查询。

本文待补充

时间: 2024-08-03 08:39:12

【整理】SQLServer查询各种数据库对象(表,索引,视图,图表,存储过程等)的相关文章

SqlServer查询出数据库中所有的表及其字段属性

代码如下所示: /********************************* SqlServer查询出数据库中所有的表及其字段属性 *********************************/ SELECT ( CASE WHEN a.colorder = 1 THEN d.name ELSE '' END ) AS 表名 ,--如果表名相同就返回空 a.colorder AS 字段序号 , a.name AS 字段名 , ( CASE WHEN COLUMNPROPERTY(a

sqlserver查询数据的所有表名和行数

原文:sqlserver查询数据的所有表名和行数 //查询所有表明select name from sysobjects where xtype='u' select * from sys.tables //查询数据库中所有的表名及行数 SELECT a.name AS [TABLE NAME] , b.rows AS [RECORD COUNT] FROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.id WHERE ( a.t

Oracle数据库对象_索引

查询是在表上进行的最频繁的访问. 在查询数据时,很少有用户愿意查询表中的所有数据,除非要对整个表进行处理.一般情况下用户总是查询表中的一部分数据. 在SELECT语句中,通常需要通过WHERE子句指定查询条件,以获得满足该条件的所有数据.如果能够在很小的范围内查询需要的数据,而不是在全表范围内查询,那么将减少很多不必要的磁盘1/0 ,查询的速度无疑会大大加快.提供这种快速查询的方法就是索引. 索引的基本概念 索引是一种建立在表上的数据库对象,它主要用于加快对表的查询操作. 合理使用索引可以大大减

数据库的对象——表、视图、序列

1.对象:表.视图.索引.函数 2.视图: 数据库对象--序列:

sql 查询所有数据库、表名、表字段总结

转自:http://www.cnblogs.com/aflyfly/archive/2011/08/10/2133546.html  錒飛 ms sql server1.查询所有表select [id], [name] from [sysobjects] where [type] = 'u' order by [name]2.查询所有数据库3.select [name] from [sysdatabases] order by [name]查询表中字段 select [name] from [s

java 查询oracle数据库所有表DatabaseMetaData的用法

DatabaseMetaData的用法(转) 一 . 得到这个对象的实例 Connection con ; con = DriverManager.getConnection(url,userName,password); DatabaseMetaData dbmd = con.getMetaData(); 二. 方法getTables的用法原型: ResultSet DatabaseMetaData.getTables(String catalog,String schema,String t

oracle中查询用户表/索引/视图创建语句

不多说,直接上干货 1.查询当前用户下表的创建语句 select dbms_metadata.get_ddl('TABLE','ux_future') from dual; 2.查询其他用户下表的创建语句 select dbms_metadata.get_ddl('TABLE','ux_future','Admin') from dual; 3.查询当前用户下索引的创建语句 select dbms_metadata.get_ddl('INDEX','ux_future') from dual;

oracle表,视图,存储过程,函数,序列.....查询

查询存储过程,函数,序列,表,视图的名字 select object_name from user_objects where object_type = 'PROCEDURE' select object_name from user_objects where object_type = 'FUNCTION' select object_name from user_objects where object_type = 'SEQUENCE' select object_name from

mysql、oracle、sqlserver查询某数据库中对应的表的个数

1.oracle查询数据库中表的个数: select count(*) from user_tables 这个操作的前提是,登录成功 2.mysql查询数据库中表的个数: SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES WHERE table_schema = '数据库' GROUP BY table_schema;把数据库这三个字修改成自己对应的数据库的名字3.sqlserver中查询某一个数据中表的个数: