您的位置:首页 > 移动开发 > Objective-C

SQL sever 中系统表sys.objects的作用与字段含义

2016-04-14 00:00 489 查看
摘要: SQL sever 中系统表sys.objects的作用与字段含义

0 定义

官方对sys.objects的定义:在数据库中创建的每个用户定义的架构作用域内的对象在该表中均对应一行。

这种翻译,真心的无力吐槽。我们用中文再翻译下这句中文:你在库中创建一张表,这里就会记录一条。

1 查看

执行脚本看下它的样子。

SELECT * FROM sys.objects




2 表中字段解释

序号 列名 数据类型 说明
1 name sysname 对象名。
2 object_id int 对象标识号。 在数据库中是唯一的。
3 principal_id int 如果不是架构所有者,则为单个所有者的 ID。 默认情况下,架构包含的对象由架构所有者拥有。 不过,通过使用 ALTER AUTHORIZATION 语句更改所有权可以指定备用所有者。 如果没有备用的单个所有者,则为 NULL。如果对象类型为下列类型之一,则为 NULL:
C = CHECK 约束
D = DEFAULT(约束或独立)
F = FOREIGN KEY 约束
PK = PRIMARY KEY 约束
R = 规则(旧式,独立)
TA = 程序集(CLR 集成)触发器
TR = SQL&nbs
3ff0
p;触发器
UQ = UNIQUE 约束
4 schema_id int 包含该对象的架构的 ID。始终包含在sys或INFORMATION_SCHEMA架构中的架构作用域内的系统对象。
5 parent_object_id int 此对象所属对象的 ID。
0 = 不是子对象。
6 type char(2) 对象类型:
AF = 聚合函数 (CLR)
C = CHECK 约束
D = DEFAULT(约束或独立)
F = FOREIGN KEY 约束
FN = SQL 标量函数
FS = 程序集 (CLR) 标量函数
FT = 程序集 (CLR) 表值函数
IF = SQL 内联表值函数
IT = 内部表
P = SQL 存储过程
PC = 程序集 (CLR) 存储过程
PG = 计划指南
PK = PRIMARY KEY 约束
R = 规则(旧式,独立)
RF = 复制筛选过程
S = 系统基表
SN = 同义词
SO = 序列对象
适用范围:SQL Server 2012 到 SQL Server 2016。
SQ = 服务队列
TA = 程序集 (CLR) DML 触发器
TF = SQL 表值函数
TR = SQL DML 触发器
TT = 表类型
U = 表(用户定义类型)
UQ = UNIQUE 约束
V = 视图
X = 扩展存储过程
7 type_desc nvarchar(60) 对对象类型的说明:
AGGREGATE_FUNCTION
CHECK_CONSTRAINT
CLR_SCALAR_FUNCTION
CLR_STORED_PROCEDURE
CLR_TABLE_VALUED_FUNCTION
CLR_TRIGGER
DEFAULT_CONSTRAINT
EXTENDED_STORED_PROCEDURE
FOREIGN_KEY_CONSTRAINT
INTERNAL_TABLE
PLAN_GUIDE
PRIMARY_KEY_CONSTRAINT
REPLICATION_FILTER_PROCEDURE
RULE
SEQUENCE_OBJECT
适用范围:SQL Server 2012 到 SQL Server 2016。
SERVICE_QUEUE
SQL_INLINE_TABLE_VALUED_FUNCTION
SQL_SCALAR_FUNCTION
SQL_STORED_PROCEDURE
SQL_TABLE_VALUED_FUNCTION
SQL_TRIGGER
SYNONYM
SYSTEM_TABLE
TABLE_TYPE
UNIQUE_CONSTRAINT
USER_TABLE
View
8 create_date datetime 对象的创建日期。
9 modify_date datetime 上次使用 ALTER 语句修改对象的日期。 如果对象为表或视图,则创建或修改表或视图的聚集索引时,modify_date 也会随之更改。
10 is_ms_shipped bit 对象由内部 SQL Server 组件创建。
11 is_published bit 对象为发布对象。
12 is_schema_published bit 仅发布对象的架构。
3 有什么作用

3.1 你可以用下面的命令列出感兴趣的所有对象

SELECT * FROM sysobjects WHERE xtype = <type of interest>

SELECT * FROM sysobjects WHERE xtype = 'V'  --例如:查看视图
3.2 判断数据库中是否已经存在某个表,有的话就删除该表
----方法一:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and type='U'))
drop table [dbo].[表名]

----方法二:
if exists (Select * From sysObjects Where type='U' And Name='表名'))
drop table [dbo].[表名]
一般建议不要更新此表,但是查询还是OK的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sqlserver sys.objects