首页 > 数据库 >sql server 判断是否存在数据库,表,列,视图

sql server 判断是否存在数据库,表,列,视图

时间:2024-01-16 20:07:56浏览次数:45  
标签:drop exists object 视图 server sql 表名 where id

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 判断视图是否存在

--判断是否存在'MyView52'这个试图
IF EXISTS (SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME = N'MyView52')
PRINT '存在'
else
PRINT '不存在'
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'

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 '不是自增列'
  
SELECT * FROM sys.columns WHERE object_id=OBJECT_ID('表名')  AND is_identity=1

10 判断表中是否存在索引

if exists(select * from sysindexes where id=object_id('表名') and name='索引名')    
  print  '存在'    
else    
  print  '不存在'

删除索引 drop index 表名.索引名

或: drop index 索引名  on 表名(貌似2000不行)

11 查看数据库中对象

SELECT * FROM sys.sysobjects WHERE name='对象名'  SELECT * FROM sys.sysobjects WHERE name='对象名'



标签:drop,exists,object,视图,server,sql,表名,where,id
From: https://blog.51cto.com/u_16371710/9275966

相关文章

  • sql数据类型有哪些?
    1、二进制数据类型。二进制数据包括Binary、Varbinary和ImageBinary数据类型既可以是固定长度的(Binary),也可以是变长度的。Binary[(n)]是n位固定的二进制数据。其中,n的取值范围是从1到8000。其存储空间的大小是n+4个字节。Varbinary[(n)]是n位变长度的二进制数......
  • SQL编码规范
    ......
  • 无涯教程-SQL - Sequences(序列)
    序列是按需生成的一组整数1、2、3,...。序列在数据库中经常使用,因为许多应用程序要求表中的每一行都包含唯一值。本章介绍如何在MySQL中使用序列。AUTO_INCREMENT列MySQL中使用序列的最简单方法是将一列定义为AUTO_INCREMENT,其余部分留给MySQL处理。试试下面的例子,这将创建一......
  • SQLite的帮助类
    由于sqlserver安装复杂,维护困难,对于存储一些简单的数据,使用SQLite无疑是个好的选择经过我的了解,我发现无论是SQLSERVER,还是MySQL,还是SQLite,他们的关键词都是大差不差的比如SQLSERVER的connection关键词就是SqlConnection,SQLite的就是SQLiteConnection今天是第一次使用SQLite,写了个......
  • 无涯教程-SQL - SubQueries(子查询)
    子查询或内部查询或嵌套查询是另一个SQL查询中的查询,并嵌入在WHERE子句中。SubQueries-语法子查询最常与SELECT语句一起使用。基本语法如下-SELECTcolumn_name[,column_name]FROMtable1[,table2]WHEREcolumn_nameOPERATOR(SELECTcolumn_name[,column......
  • vscode报错Pylance client: couldn‘t create connection to server.解决
    问题描述:一打开vscode,右下角就弹报错,Pylanceclient:couldn’tcreateconnectiontoserver.,让我打开output,打开后似乎是在说连不上server因为连不上server,所以我的python代码没法解析,尝试重开vscode也没用问题解决:点开左侧的拓展,找到PythonExtensionPack,这就是解析python代......
  • MYSQL8以上修改初始root密码的方法
    很遗憾的告诉你,你网上查到的各种改my.enf,各种update,在新版MYSQL中,统统失效。解决方法,如下:1.[root@yisu-5f735cb14d716~]#servicemysqldstartRedirectingto/bin/systemctlstartmysqld.service[root@yisu-5f735cb14d716~]#mysql-vWelcometotheMySQLmonitor.Comm......
  • Mysql8忽略大小写的解决方案
    一、删除服务器数据文件由于8.0没法设置参数后重启(失败),所以必须删掉老库,重新启动才行。切记:;本步骤要删掉老库所有资料,如果是数据库当前有用,请做好备份,再进行操作。systemctlstopmysqldcd/var/lib/mysql默认数据在这里rm-rf*二、添加配置,大小写不敏感vim/etc/my.cnflow......
  • Abp vnext FreeSql 生成模板,并提供下载模板接口
    DtoDto设置参考[ExcelImporter(IsLabelingError=true)]publicclassMyDto{ [ImporterHeader(Name="序号")] [ExporterHeader(DisplayName="序号")] publicintId{get;set;}}Controller生成模板[HttpGet("GenerateTemplate")]//[Wr......
  • nextjs使用prisma连接MySQL
      第一步npminstall@prisma/client 第二步npxprismainit 生成了文件 第三步,修改文件内容 第四步 第五步测试一下,执行npxprismadbpull我里面有一个user表的,拉下来这样显示了 ......