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 语句应该就是为了防止误删误操作之类用的,有点迷惑,
缺乏实际使用经验,望指正提供以下示例示范…… 展开
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 语句应该就是为了防止误删误操作之类用的,有点迷惑,
缺乏实际使用经验,望指正提供以下示例示范…… 展开
2个回答
展开全部
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
这是一个创建表的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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询