关于if exists的用法及说明

 更新时间:2022年09月26日 14:09:45   作者:liessay  
这篇文章主要介绍了关于if exists的用法及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

1 判断数据库是否存在

if exists (select * from sys.databases where name = '数据库名')  
  drop database [数据库名]

2 判断表是否存在

if exists (select * from sysobjects where id = object_id(N'[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)  
  drop table [表名]

3 判断存储过程是否存在

if exists (select * from sysobjects where id = object_id(N'[存储过程名]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)  
  drop procedure [存储过程名]

4 判断临时表是否存在

if object_id('tempdb..#临时表名') is not null    
  drop table #临时表名

5 判断视图是否存在

--SQL Server 2000   
IF EXISTS (SELECT * FROM sysviews WHERE object_id = '[dbo].[视图名]'  
--SQL Server 2005   
IF EXISTS (SELECT * FROM sys.views WHERE object_id = '[dbo].[视图名]'  --SQL Server 2000
IF EXISTS (SELECT * FROM sysviews WHERE object_id = '[dbo].[视图名]'
--SQL Server 2005
IF EXISTS (SELECT * FROM sys.views WHERE object_id = '[dbo].[视图名]'

6 判断函数是否存在

--  判断要创建的函数名是否存在    
  if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[函数名]') and xtype in (N'FN', N'IF', N'TF'))    
  drop function [dbo].[函数名]    --  判断要创建的函数名是否存在  

7 获取用户创建的对象信息 

SELECT [name],[id],crdate FROM sysobjects where xtype='U'  
/*  
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 = 扩展存储过程*/

8 判断列是否存在

if exists(select * from syscolumns where id=object_id('表名') and name='列名')  
  alter table 表名 drop column 列名

9 判断列是否自增列

if columnproperty(object_id('table'),'col','IsIdentity')=1  
  print '自增列'  
else  
  print '不是自增列'  

10 判断表中是否存在索引

if exists(select * from sysindexes where id=object_id('表名') and name='索引名')    
  print  '存在'    
else    
  print  '不存在11 查看数据库中对象
SELECT * FROM sys.sysobjects WHERE name='对象名'

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。 

相关文章

  • SQL Server 服务由于登录失败而无法启动

    SQL Server 服务由于登录失败而无法启动

    当域的密码被修改过后,相应服务使用的登陆验证信息不会自动更新需要手动来更新,才能解决此问题。如果大家嫌比较麻烦,还是像上面的解决方案那样直接将登陆身份修改为“本地系统帐户”比较简单。
    2010-05-05
  • SQL查询中按多个字段排序的方法

    SQL查询中按多个字段排序的方法

    本文主要介绍了SQL查询中按多个字段排序的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • 非常不错的SQL语句学习手册实例版

    非常不错的SQL语句学习手册实例版

    非常不错的SQL语句学习手册实例版...
    2007-03-03
  • sql存储过程几个简单例子

    sql存储过程几个简单例子

    存储过程是一组为了完成特定功能的SQL语句集,是利用SQL Server所提供的Transact-SQL语言所编写的程序。经编译后存储在数据库中。存储过程是数据库中一个重要的对象
    2016-02-02
  • SQL 中 NULL值测试代码

    SQL 中 NULL值测试代码

    在SQL语句中,where 子句:where t.modifier = null ,这里不可以使用NULL关键字,因为它不是一个真正的值,它仅仅是一个符号,因为它的值是未知的。
    2011-04-04
  • SQL Server Agent 服务启动后又停止问题

    SQL Server Agent 服务启动后又停止问题

    这篇文章主要介绍了SQL Server Agent 服务启动后又停止问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • idea连接SQL Server数据库的详细图文教程

    idea连接SQL Server数据库的详细图文教程

    Idea的还有个强大之处就是连接数据库,就可以少开一个数据库工具了,下面这篇文章主要给大家介绍了关于idea连接SQL Server数据库的详细图文教程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • 浅谈tempdb在SqlServer系统中的重要作用

    浅谈tempdb在SqlServer系统中的重要作用

    tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象。tempdb中的任何数据在系统重新启动之后都不会持久存在。因为实际上每次SQLServer启动的时候都会重新创建tempdb。这个特性就说明tempdb不需要恢复。
    2014-08-08
  • sql索引失效的情况以及超详细解决方法

    sql索引失效的情况以及超详细解决方法

    众所周知索引并不是时时都会生效的,下面这篇文章主要给大家介绍了关于sql索引失效的情况以及超详细解决方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-11-11

最新评论