SQL if exists database总是出现语法错误


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会理解为是表名并不是数据库

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM