6.3.3 常用数据字典表
数据字典表又称为系统表,其中存储了元数据(metadata),也就是“有关数据的结构数据”,或者说是“关于数据的信息”。在关系型数据库管理系统(DBMS)中,元数据描述了数据的结构和意义。比如在管理、维护,或者是开发数据库应用程序的时候,我们经常要从数据字典中获取一些涉及数据库架构的信息:
(1)某个数据库中的表和视图的个数以及名称;
(2)某个表或者视图中列的个数以及每一列的名称、数据类型、长度、精度、描述等;
(3)某个表上定义的约束;
(4)某个表上定义的索引以及主键/外键的信息。
SQL Server 中常用的数据字典表(系统表)如下:
syscolumns 存储每个表和视图中的每一列的信息以及存储过程中的每个参数的信息。
syscomments 存储包含每个视图、规则、默认值、触发器、CHECK约束、DEFAULT约束和存储过程的原始SQL文本语句。
sysconstraints 存储当前数据库中每一个约束的基本信息。
sysdatabases 存储当前服务器上每一个数据库的基本信息。
sysindexes 存储当前数据库中的每个索引的信息。
sysobjects 存储数据库内的每个对象(约束、默认值、日志、规则、存储过程等)的基本信息。
sysreferences 存储所有包括FOREIGN KEY约束的列。
[例1]查询数据库test中的所有表对象。
select* from test..sysobjects where type='u'or type='s'
这里的type='u'是表示用户表对象,type='s'是系统表对象。
[例2]查询数据库test中的所有存储过程。
select* from test..sysobjects where type='p'
如果你要查询的是用户存储过程则加上and category<> 2即可。
[例3]查询数据库test中的所有视图
select* from test..sysobjects where type='v'
如果你要查询的是用户视图则加上and category<> 2即可。
[例4]查询数据库test中用户存储过程的内容:
selecta.name,b.* from test..sysobjects a,test..syscomments b where a.type='p'and a. category<> 2 and a.id= b.id
[例5]查询数据库test中所有用户表的列信息:
selecta.name,b.* from test..sysobjects a,test..syscolumns b where a.type='u'and a.id = b.id
[例6]获得当前数据库所有用户表的名称。
SELECT OBJECT_NAME(id)FROM sysobjects
WHERE xtype='U'AND OBJECTPROPERTY(id,'IsMSShipped')= 0
其中主要用到了系统表sysobjects以及其属性xtype,还有就是用到了OBJECTPROPERTY系统函数来判断是不是安装SQL Server的过程中创建的对象。
[例7]获得指定表上所有的索引名称
SELECT name FROM sysindexes
WHERE id= OBJECT_ID('mytable')AND indid> 0
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。