SQL Server系统表介绍

#1SQL Server系统表
#2sysobjects 表
  在数据库内创建的每个对象(约束、默认值、日志、规则、存储过程等)在表中占一行。只有在 tempdb 内,每个临时对象才在该表中占一行。

--SELECT * FROM sysobjects WHERE xtype = 
--例如:查看视图
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 = 假。

你可能感兴趣的:(SQL)