SQLServer系统表使用简介(sysobjects、syscolumns、syscomments等)转载
sysobjects:记录了数据库中每一个表、视图、约束、存储过程等详细内容的表。
表中常用的字段如下 :
列名 | 数据类型 | 描述 |
---|---|---|
name | sysname | 对象名 |
id | int | 对象标识号 |
xtype | char(2) | 对象类型,C=CHECK约束 D=默认值或DEFAULT约束 F=FOREIGN KEY约束 L=日志 FN=标量函数 IF=内嵌表函数 P=存储过程 PK=主键约束 RF=复制筛选存储过程 S=系统表 TF=表函数 TR=触发器 U=用户表 UQ=UNIQUE约束 V=视图 X=扩展存储过程 |
parent_obj | int | 父对象的对象标识号 |
crdate | datetime | 对象创建日期 |
object_id('obj_name',‘obj_type’)函数:参数类型为varchar或nvarchar,如果是varchar,系统自动转为nchar。返回值是obj_name在sysobjects表中的对应id。若未找到对应的obj_name,则返回NULL。
object_name()函数:参数类型为int,传入sysobjects表中的id,返回sysobjects表中的name。
--判断表是否已经存在于数据库中,如果有,则删除表。
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 xtype='U' And Name='表名'))
drop table [dbo].[表名]
syscolumns:记录表、视图中的字段,以及存储过程中的参数。
表中常用的字段如下 :
列名 | 数据类型 | 描述 |
---|---|---|
name | sysname | 字段名称 |
id | int | 字段所属表id |
xtype | char(2) | 字段类型 |
length | smallint | 字段物理存储长度 |
syscomments
表中常用的字段如下 :
列名 | 数据类型 | 描述 |
---|---|---|
id | int | 对象对应sysobjects表中的id |
text | nvarchar(4000) | SQL定义的文本 |
若存储过程等SQL语句超过4000,可以使用sp_helptext @pro_name获取存储过程的全部内容。
SELECT * FROM sysobjects WHERE xtype = <type of interest>
--例如:查看视图
SELECT * FROM sysobjects WHERE xtype = 'V' 判断数据库中是否已经存在某个表,有的话就删除该表
--方法一:
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].[表名]
1、问:object_id(N'表名')中N'代表什么意思?
答:N'' 代表 Unicode类型.可以支持不同语种的对象名
2、 问:select * from dbo.sysobjects where id = object_id(N'[dbo].[usertab]') and OBJECTPROPERTY(id, N'IsUserTable') = 1
这句中的object_id(N'[dbo].[usertab]')和OBJECTPROPERTY(id, N'IsUserTable') = 1
是什么意思?
答:object_id(N'[dbo].[usertab]'):是得出系统给表usertab分配的唯一ID
OBJECTPROPERTY(id, N'IsUserTable') = 1
该对象的属性是表类型的 objectproperty(id,property)函数的使用,
3、 问:USE master SELECT * FROM ...SysObjects ” ...sysobjects ” -- 三个句点的前缀是什么意思?
答:对数据库对象名的 Transact-SQL 引用可以是由四部分组成的名称,格式如下:[ server_name.[[database_name].[owner_name]. | database_name.[owner_name]. | owner_name.] ] object_name
最新文章
- CodeForces462 A. Appleman and Easy Task
- 大气漂亮的jQuery水晶样式下拉菜单
- [HIMCM暑期班]第3课:一个博弈问题
- ACM/ICPC 之 四道MST-Kruskal解法-练习题(POJ1251-POJ1287-POJ2031-POJ2421)
- 简单区分VMware的三种网络连接模式(bridged、NAT、host-only)
- equals
- Jenkins学习五:更改Jenkins的主目录
- Flume的安装与配置
- 找出进程中各线程cpu消耗情况
- tcpproxy:基于 Swoole 实现的 TCP 数据包转发工具的方法
- Linq 中的distinct去重
- 关于php 高并发解决的一点思路
- JAVA的Executor框架
- Django2.0文档
- sed 双引号 单引号的区别
- _quest_random
- 【CF587F】Duff is Mad AC自动机+分块
- 如何写出健壮的Java代码
- tarjan算法--求解无向图的割点和桥
- PCI(Payment Card Industry)合规
热门文章
- iOS UmbrellaHeader
- B 蒜头君的树
- 老技术新谈,Java应用监控利器JMX(2)
- .NET Core项目部署到Linux(Centos7)(六)发布.NET Core 项目到Linux
- Mysql数据库错误代码大全
- 打开scratch后蓝屏怎么办
- 以太坊代币,USDT归集流程图
- stdio.h file not found mac catalina clion 头文件 找不到
- 【物理】AABB物理碰撞检测
- (js描述的)数据结构[树结构1.1](11)