使用 DROP DATABASE 语句删除整个数据库,包括系统目录表、对象和数据。
该语句是 SQL ANSI/ISO 标准的扩展。
语法
用法
DROP DATABASE 语句是 ANSI/ISO 标准的扩展,该标准没有提供毁坏数据库的语法。
以下语句删除 stores_demo 数据库:
DROP DATABASE stores_demo
您必须拥有 DBA 特权,或者您是用户 gbasedbt 才可成功运行 DROP DATABASE 语句。否则,
数据库服务器会发出一条错误消息,并且不会删除数据库。
不能删除当前数据库或当前正由其它用户使用的数据库。数据库的所有当前用户必须先执行 CLOSE
DATABASE 语句,这样 DROP DATABASE 才会成功。
DROP DATABASE 语句试图创建到您的想要删除的数据库的隐式连接。如果前面的 CONNECT 语
句已经建立了到另一个数据库的显式连接,而且该连接仍然是您的当前连接,则 DROP DATABASE
语句失败,错误为 -1811。在这种情况下,您必须首先使用 DISCONNECT 语句关闭显式连接后,
才能执行 DROP DATABASE 语句。
如果您包含可选的 IF EXISTS 关键字,则如果没有指定名称的数据库由所连接的数据库服务器实例
管理,则数据库服务器不采取任何操作(而不是向应用程序返回错误)。
DROP DATABASE 语句不可以出现在多语句 PREPARE 中,也不可以出现在 SPL 例程中。
在 DROP DATABASE 操作中,数据库服务器对数据库中的每个表都获取一个锁,并保留这些锁直
至整个操作完成。请给您的数据库服务器配置足够的锁以满足这一事实的发生。
例如,如果要删除的数据库有 2500 个表,但是为您的数据库服务器配置的锁定少于 2500 个,则
DROP DATABASE 语句失败。有关如何配置可用于数据库服务器的锁的数目的更多信息,请参阅
GBase 8s 管理员参考手册 中对 LOCKS 配置参数的讨论。
在 DB-Access 中,使用 DROP DATABASE 语句时要小心。DB-Access 不会提示您验证是否想要
删除整个数据库。
在 ESQL/C 中,您可以在程序或主变量中使用未限定的数据库名称,或可以指定标准的
database@server 格式。例如,以下语句删除了名为 gibson95 的数据库服务器的 stores_demo 数
据库:
EXEC SQL DROP DATABASE stores_demo@gibson95;
如果此语句执行成功,则 gibson95 数据库服务器实例继续存在,但该数据库服务器的 stores_demo
数据库不再存在。有关更多信息,请参阅数据库名。