sql server 系统表sysobjects、sysindexes、syscolumns以及常用方法

sql server数据库中三张重要的系统表

  • sysobjects:在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。
  • sysindexes:数据库中的每个索引和表在表中各占一行。
  • syscolumns:每个表和视图中的每列在表中占一行,存储过程中的每个参数在表中也占一行。

这三张表用ID(表ID)字段关联,共用一个ID,具体的字段含义这里就不一一列举了,接下来给大家分享我们可以用这个几张表干什么,以及常用的方法

SQL SERVER 中的 OBJECT / OBJECT_ID/OBJECT_NAME函数

OBJECT

语法:OBJECT ('ObjectName') 或OBJECT('ObjectName','Type')   

作用:该会返回指定对象的ID值,可以在sysobjects表中进行验证。

Type类型列表:

AF = Aggregate function (CLR)
C = CHECK constraint
D = DEFAULT (constraint or stand-alone)
F = FOREIGN KEY constraint
FN = SQL scalar function
FS = Assembly (CLR) scalar-function
FT = Assembly (CLR) table-valued function
IF = SQL inline table-valued function
IT = Internal table
P = SQL Stored Procedure    -- // 存储过程
PC = Assembly (CLR) stored-procedure
PG = Plan guide
PK = PRIMARY KEY constraint
R = Rule (old-style, stand-alone)
RF = Replication-filter-procedure
S = System base table
SN = Synonym
SQ = Service queue
TA = Assembly (CLR) DML trigger
TF = SQL table-valued-function
TR = SQL DML trigger  -- // 触发器
U = Table (user-defined)    -- // 表
UQ = UNIQUE constraint
V = View      -- // 视图
X = Extended stored procedure

例1:

SELECT OBJECT_ID('BS')             -- 返回ID :12535785
SELECT OBJECT_ID('BS','U')         -- 返回ID :12535785
--以上等同于:
SELECT * FROM SYSOBJECTS WHERE name='BS' AND XTYPE='U'    -- 返回ID :12535785

例2:

-- 判断表是否存在
IF OBJECT_ID('Table1', 'U') IS NOT NULL
BEGIN
    PRINT '表Table1存在';
END;
ELSE
BEGIN
    PRINT '表Table1不存在';
END;

OBJECT_NAME 函数 

  OBJECT_ID    根据对象名称返回该对象的ID.
  OBJECT_NAME   根据对象ID返回对象名称.
 

SELECT OBJECT_ID(对象名)
--等同于:
SELECT * FROM SYSOBJECTS WHERE name='对象名'

SELECT OBJECT_NAME( ID ) 
--等同于:
SELECT * FROM SYSOBJECTS WHERE id='ID'

例如查询表的所有数据

SELECT object_name(id) as TableName,indid,rows,rowcnt
FROM sys.sysindexes WHERE id = object_id('loop_eval_record')
and indid in(0,1);

有人问,我用count()不也可以实现吗,对,是可以实现,但如果数据量特别大,是以亿为单位的呢,你用count()会需要很长的时间,而上面的方法是查询sysindexes 表的,查询时间是毫秒级的,是查询了sysindexes 表中的一个字段,不像count()是进行了全表扫描

上面的name字段是索引名称,rows字段是总共多少行数据

  • 5
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值