T-SQL,求IF EXISTS和IF NOT EXISTS的实际使用示例

学习ifexists时候,教材竟然是些很搞笑的示例。后来想一想都不符合逻辑↓ifexists(select*fromsysdatabaseswherename='×××'... 学习if exists 时候,教材竟然是些很搞笑的示例。后来想一想都不符合逻辑 ↓
if exists(select * from sysdatabases where name='×××')
drop databases ×××
create database ×××
……
go

if exists(select * from sysobjects where name='×××')
drop table ×××
create table ×××
……
go

用OOP思想理解起来就是施工队要在工地施工,先派人(IF EXISTS)探测有没有具体某栋楼(NAME='×××'),有就拆掉然后建立这栋楼,没有就直接建这栋楼。

教材解释是防止已存在导致创建失败,仔细想想有点不符合逻辑。既然肯定要create “建楼”,根本就不用检查有没有了,有就drop没有就不drop,这里干嘛还用IF EXISTS来“探测”,是不是有点多余?

直接drop打头就可以。但这样是不是结合应用程序try catch 语句块又产生问题呢?

我感觉 EXITS 语句应该就是为了防止误删误操作之类用的,有点迷惑,

缺乏实际使用经验,望指正提供以下示例示范……
展开
 我来答
snailgzm
2013-02-03 · TA获得超过3947个赞
知道大有可为答主
回答量:6861
采纳率:0%
帮助的人:2098万
展开全部
mysql的,对不对?

这是一个创建表的SQL

CREATE TABLE IF NOT EXISTS`tb_gonggao`
表tb_gonggao不存在,则创建

'身份证'INT(4)NOT NULL auto_increment的,
创建id字段,4个整数位,不允许为空,增量字段

`标题`VARCHAR(200)默认NULL,
创建一个title字段,200的字符串,缺省值是空

PRIMARY KEY(`ID`)
设置主键id字段
BR /> ENGINE = MyISAM表
使用MyISAM存储引擎,这意味着

DEFAULT CHARSET = latin1的,
存储在数据库默认的字符集

AUTO_INCREMENT = 23;
参考:的 http://blog.sina.com。 cn/s/blog_5da3d5c50100bjh0.html
Forseayoung
2013-02-02 · TA获得超过146个赞
知道小有建树答主
回答量:195
采纳率:70%
帮助的人:135万
展开全部
  直接drop打头不行的,如果没有该数据库/表,你drop谁去???要出错的
追问
我是想知道EXISTS语句不应该用来防止误删么?这样的例子就是冲表冲数据库,不搞笑么。我想实际项目也是一个项目一个独立的数据库,哪有经常create 和drop的,所以就不知道EXISTS有什么很实际的用处了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式