谁能给我解释一下这条sql语句?

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[T_Class]') AND type in (N'U'))
DROP TABLE [dbo].[T_Class]

要详细的,每个字段都要解释!
再说下哪些可以不写,我要最简单的!
我是要最简单但能达到同样效果的啊~

IF EXISTS == 如果存在
(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[T_Class]') AND type in (N'U'))
查询数据库的 数据字典, 检索一个 对象ID = 名字叫 '[dbo].[T_Class]' 的对象ID。 并且类型是 'U' 的。
DROP TABLE [dbo].[T_Class]
删除表 [dbo].[T_Class]

其实如果你是偷懒的话, 就直接
DROP TABLE [dbo].[T_Class]

结果就是, 如果有,就删除, 没有, SQL Server 会抱错。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-17
sys.objects 是系统对象
OBJECT_ID 是每个对象的唯一标识
N表示使用Union Code
type in (N'U')
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 = 扩展存储过程

这句话的意识是如果在系统对象中,存在一个同样的表,
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID AND type in (N'U'))
DROP TABLE [dbo].[T_Class]
第2个回答  2011-01-17
如果存在表T-Class 就把这个表删除掉.
exists(..)判断结果集是否为空.
相似回答