加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

认识SQLSERVER中sysobjects表

发布时间:2020-12-12 13:10:08 所属栏目:MsSql教程 来源:网络整理
导读:sysobjects表:?sysobjects 是SQLSERVER中的系统对象表,保存系统中的当前所有对象,包括表、存储过程、视图、主键、外键、约束等 通过sql查询sysobjects ,并没有排序,查询结果i默认通过id排序 sysobjects 有几个比较重要的字段 name: ?object名称 id: ?obj

sysobjects表:?sysobjects 是SQLSERVER中的系统对象表,保存系统中的当前所有对象,包括表、存储过程、视图、主键、外键、约束等

通过sql查询sysobjects ,并没有排序,查询结果i默认通过id排序


sysobjects 有几个比较重要的字段

name: ?object名称

id: ?object id,从查询结构看id字段应该是主键,不重复

xtype: ?object类型

uid: object所有者id

继续查看后面的查询结果



观察到xtype不在是S,下面介绍一下xtype的多种值

C = CHECK 约束 D = 默认值或 DEFAULT 约束 F = FOREIGN KEY 约束 FN =? 标量函数 IF = 内嵌表函数 PK = PRIMARY KEY L = 日志 P =? 存储过程 R = 规则 RF = 复制筛选存储过程 S = 系统表 TF = 表函数 TR =? 触发器 U = 用户表 V = 视图 X = 扩展存储过程 AF =? 聚合函数?( CLR) FS = 程序集 (CLR) 标量函数 FT = 程序集 (CLR) 表值函数 IF = 内联表函数 IT = 内部表 PC = 程序集 (CLR)? PK = PRIMARY KEY 约束 SN = 同义词 SQ = 服务队列 TA = 程序集 (CLR) DML 触发器 TT = 表类型 UQ = UNIQUE 约束 我觉得需要记住的类型为

P = 存储过程 ?S=系统表 ?U=用户表 ?TR=触发器?

从查询结果看出系统表的uid 4,用户表的uid为1,而表中并没有id为1、4的行数据,可以理解系统自动隐藏了几个非常重要的id,并且它们并没有uid

观察到id的长度不在一位或者两位,已变成多位,可以猜想出非系统已内置的id都是类似于UUID,防止重复冲突

下面介绍下常用功能

?如果需要查询当前数据库中有多少张用户表,执行sql: SELECT count(1) FROM sysobjects where xtype='U'

如果需要查询当前数据库是否已存在某张表,执行sql:?select count(1) from sysobjects where name='表名'

如果需要新建表,且先判断当前数据库是否已存在,执行sql:

if not exists(select 1 from sys.objects where name='表名')

begin

CREATE TABLE [dbo].[表名](

[字段名1] [类型](长度) NULL,

[字段名2] [类型](长度 NULL,

? ? ? ?.........
) ON [PRIMARY]

end

go

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读