#1SQL Server系统表
#2sysobjects 表
在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。
--SELECT * FROM sysobjects WHERE xtype = <type of interest>
--例如:查看视图
SELECT * FROM sysobjects WHERE xtype = 'V'
--例如:查看用户表
SELECT * FROM sysobjects WHERE xtype = 'U'
查询修改过的触发器、用户表
select objects.*
from sys.objects as objects
where objects.type = 'TR' -- 返回触发器
and modify_date >='2020-02-01'
-- 查询修改过的用户表
select objects.*
from sys.objects as objects
where objects.type = 'U' -- 返回用户表
and modify_date >='2020-02-01'
查询一个用户表所有字段
select *
from sys.columns as columns left join sys.objects as objects
on columns.object_id = objects.object_id
left join sys.types as types
on columns.system_type_id = types.system_type_id
where objects.type = 'U' -- 返回用户表
and objects.name = 'demo_wf' -- 表名
-- 字段类型表
select *
from sys.types
判断数据库中是否已经存在某个表,有的话就删除该表
--方法一:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[表名]
--方法二:
if exists (select * from sysobjects where id = object_id(N'表名') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[表名]
--方法三:
if(Exists(Select * From SysObjects Where xtype='U' And Name='表名'))
drop table [dbo].[表名]
--方法四
if OBJECT_ID('test_print','U') is not null
drop table test_print
create table test_print(c1 varchar(100))
sql server系统表详细说明
sysaltfiles | 主数据库 保存数据库的文件 |
---|---|
syscharsets | 主数据库字符集与排序顺序 |
sysconfigures | 主数据库 配置选项 |
syscurconfigs | 主数据库当前配置选项 |
sysdatabases | 主数据库服务器中的数据库 |
syslanguages | 主数据库语言 |
syslogins | 主数据库 登陆帐号信息 |
sysoledbusers | 主数据库 链接服务器登陆信息 |
sysprocesses | 主数据库进程 |
sysremotelogins | 主数据库 远程登录帐号 |
syscolumns | 每个数据库 列 |
sysconstrains | 每个数据库 限制 |
sysfilegroups | 每个数据库 文件组 |
sysfiles | 每个数据库 文件 |
sysforeignkeys | 每个数据库 外部关键字 |
sysindexs | 每个数据库 索引 |
sysmenbers | 每个数据库角色成员 |
sysobjects | 每个数据库所有数据库对象 |
syspermissions | 每个数据库 权限 |
systypes | 每个数据库 用户定义数据类型 |
sysusers | 每个数据库 用户 |
sysobjects 表 的表结构
列名 | 数据类型 | 描述 |
---|---|---|
name | sysname | 对象名,常用列 |
id | int | 对象标识号 |
xtype | char(2) | 对象类型。常用列。xtype可以是下列对象类型中的一种: |
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 | 所有者用户对象编号 |
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 | 保留 |
syscolumns 表结构
列名 | 数据类型 | 描述 |
---|---|---|
name | sysname | 列名或过程参数的名称。 |
id | int | 该列所属的表对象 ID,或与该参数关联的存储过程 ID。 |
xtype | tinyint | systypes 中的物理存储类型。 |
typestat | tinyint | 仅限内部使用。 |
xusertype | smallint | 扩展的用户定义数据类型 ID。 |
length | smallint | systypes 中的最大物理存储长度。 |
xprec | tinyint | 仅限内部使用。 |
xscale | tinyint | 仅限内部使用。 |
colid | smallint | 列或参数 ID。 |
xoffset | smallint | 仅限内部使用。 |
bitpos | tinyint | 仅限内部使用。 |
reserved | tinyint | 仅限内部使用。 |
colstat | smallint | 仅限内部使用。 |
cdefault | int | 该列的默认值 ID。 |
domain | int | 该列的规则或 CHECK 约束 ID。 |
number | smallint | 过程分组时(0 表示非过程项)的子过程号。 |
colorder | smallint | 仅限内部使用。 |
autoval | varbinary(255) | 仅限内部使用。 |
offset | smallint | 该列所在行的偏移量;如果为负,表示可变长度行。 |
status | tinyint | 用于描述列或参数属性的位图: |
0x08 = 列允许空值。 | ||
0x10 = 当添加 varchar 或 varbinary 列时,ANSI 填充生效。保留 varchar 列的尾随空格,保留 varbinary 列的尾随零。 | ||
0x40 = 参数为 OUTPUT 参数。 | ||
0x80 = 列为标识列。 | ||
type | tinyint | systypes 中的物理存储类型。 |
usertype | smallint | systypes 中的用户定义数据类型 ID。 |
printfmt | varchar(255) | 仅限内部使用。 |
prec | smallint | 该列的精度级别。 |
scale | int | 该列的小数位数。 |
iscomputed | int | 表示是否已计算该列的标志: |
0 = 未计算。 | ||
1 = 已计算。 | ||
isoutparam | int | 表示该过程参数是否是输出参数: |
1 = 真。 | ||
0 = 假。 | ||
isnullable | int | 表示该列是否允许空值: |
1 = 真。 | ||
0 = 假。 |