关于SQL Server中的系统表之一 sysobjects

2019-09-17 17:20:17 浏览数 (1)

  微软Sql Server数据库是企业开发管理中最常用的数据库系统之一。其功能强大而且使用简单、方便。我们在数据库中创建数据库、表、视图、触发器、存储过程、函数等信息。

  最常用的功能之一,查询数据,例如:

代码语言:javascript复制
1 SELECT [SysAreaId]
2       ,[AreaName]
3       ,[AreaNamePinYin]
4       ,[ShortName]
5       ,[AreaTypeId]
6       ,[Depth]
7       ,[ParentId]
8       ,[PostCode]
9   FROM [SavionPlatMisDB].[dbo].[SysArea]

查询结果如下图:

从上图结果看出,查询结果是以网状行、列形式展示出来的。这就是关系型数据库的特性之一。

那么我们创建的表、视图等信息是如何存储的呢?其实SQL Server数据库是一种“自解释”性是存储介质。我们创建的表、视图等也是存储在其系统默认数据库与表中。

其中之一就是sysobjects表。

  SQL Server的每个数据库内都有此系统表,它存放该数据库内创建的所有对象,如约束、默认值、日志、规则、存储过程等,每个对象在表中占一行。

以下是此系统表的字段名称和相关说明。

列名

数据类型

描述

name

sysname

对象名。

Id

int

对象标识号。

xtype

char(2)

对象类型。可以是下列对象类型中的一种: C = CHECK 约束D = 默认值或 DEFAULT 约束F = FOREIGN KEY 约束L = 日志FN = 标量函数IF = 内嵌表函数P = 存储过程PK = PRIMARY KEY 约束(类型是 K)RF = 复制筛选存储过程S = 系统表TF = 表函数TR = 触发器U = 用户表UQ = UNIQUE 约束(类型是 K)V = 视图X = 扩展存储过程

uid

smallint

所有者对象的用户 ID。

info

smallint

保留。仅限内部使用。

status

int

保留。仅限内部使用。

base_schema_ver

int

保留。仅限内部使用。

replinfo

int

保留。供复制使用。

parent_obj

int

父对象的对象标识号(例如,对于触发器或约束,该标识号为表 ID)。

crdate

datetime

对象的创建日期。

ftcatid

smallint

为全文索引注册的所有用户表的全文目录标识符,对于没有注册的所有用户表则为 0。

schema_ver

int

版本号,该版本号在每次表的架构更改时都增加。

stats_schema_ver

int

保留。仅限内部使用。

type

char(2)

对象类型。可以是下列值之一: C = CHECK 约束D = 默认值或 DEFAULT 约束F = FOREIGN KEY 约束FN = 标量函数IF = 内嵌表函数K = PRIMARY KEY 或 UNIQUE 约束L = 日志P = 存储过程R = 规则RF = 复制筛选存储过程S = 系统表TF = 表函数TR = 触发器U = 用户表V = 视图X = 扩展存储过程

userstat

smallint

保留。

sysstat

smallint

内部状态信息。

indexdel

smallint

保留。

refdate

datetime

留作以后使用。

version

int

留作以后使用。

deltrig

int

保留。

instrig

int

保留。

updtrig

int

保留。

seltrig

int

保留。

category

int

用于发布、约束和标识。

cache

smallint

保留。

当xtype='U' and status>0代表是用户建立的表,对象名就是表名,对象ID就是表的ID值。

用以下代码就可以列出库misa中所有的用户建立的表名:

代码语言:javascript复制
1    select * from dbo.sysobjects 
2    where xtype='U'and status>0 

0 人点赞