SQL if exists总是出现语法错误。望高手纠正。_百度知道 http://zhidao.baidu.com/link?url=7VyzcX0V1A3lhBQ1emNt2sTk7QGDuijOqRsSxc1ML7owhy5utaaRIUYBtGG8hRmf8HaSlIgRKsEvkI3Tqc9guq

IF EXISTS ( SELECT name FROM sys.databases WHERE name = 'ttt' )
DROP DATABASE ttt;
或者
IF EXISTS ( SELECT name FROM sys.databases WHERE name = 'ttt' )
DROP DATABASE [ttt];
或者
IF EXISTS ( SELECT name FROM databases WHERE name = 'ttt' )
DROP DATABASE ttt;

没怎么用mySQL,所以不大确定和我学的一不一样,给了三个可能,应该是其中一种。
追问
试过了,都不行!还是ERROR 1064.
回答
我帮你上网查了一下,ERROR1064一般是版本问题,因为不同版本有不同的Reserve Word,比如‘Order’和‘When’,也有因为忘了分号出现的,还有的大多数是CREATE TABLE才出现的。
你的error message没有更详细的吗?
追问

我的SQL版本是5.5.27.0   已经卡在这好几天了,网上也查过下,但至此未找到原因,若能助找出原因,这个年可过得踏实多了。呵呵.....

回答
又查了半天资料,你试试这个吧
DROP DATABASE IF EXISTS ttt;
另外:这个database是test或者learning用的吗?随便删database没关系?
提问者评价
感谢你的帮助,确实可顺利执行,只是不太明白,为什么按原有语法会出错,教程所述都是这样写的。

 

drop  database if exists `dbname`;
追问
这个命令确实可以解决。只是不明白为何网上看的基本都是if exists(select * from sys.databases where name='xxx' )的格式,却根本不可执行!
回答
因为select  from  后接的是表名
你是sys.databases SQL会理解为是表名并不是数据库

 

 

posted on 2014-01-03 09:05  自由的野狼  阅读(4166)  评论(0编辑  收藏  举报