USE命令是一个非标准的SQL扩展(在SQL Server中也支持),它选择一个默认的命名空间(数据库名称)。 如果没有默认的命名空间(数据库)名称,您需要在SQL语法中指定数据库:例如SELECT a FROM myschema.t1。 没有取消默认数据库的命令,因为它没有任何意义。要么你想使用默认的命名空间,要么你不想。也没有办法通过客户端API取消设置默认数据库,如果您传递NULL参数,COM_SELECT_DB和COM_CHANGE_USER协议命令都不会更改默认数据库。 但是,客户端程序应该始终知道默认数据库是否更改或删除,以避免不一致和错误。这可以通过例如通过执行语句SELECT DATABASE()(这是mysql命令行客户端正在做的)或在最近的MySQL和MariaDB版本中通过分析会话跟踪信息(这是从服务器发送到客户端的OK数据包的一部分)。 命令行客户端示例:
2条答案
按热度按时间qyzbxkaa1#
USE
命令是一个非标准的SQL扩展(在SQL Server中也支持),它选择一个默认的命名空间(数据库名称)。如果没有默认的命名空间(数据库)名称,您需要在SQL语法中指定数据库:例如
SELECT a FROM myschema.t1
。没有取消默认数据库的命令,因为它没有任何意义。要么你想使用默认的命名空间,要么你不想。也没有办法通过客户端API取消设置默认数据库,如果您传递NULL参数,
COM_SELECT_DB
和COM_CHANGE_USER
协议命令都不会更改默认数据库。但是,客户端程序应该始终知道默认数据库是否更改或删除,以避免不一致和错误。这可以通过例如通过执行语句
SELECT DATABASE()
(这是mysql命令行客户端正在做的)或在最近的MySQL和MariaDB版本中通过分析会话跟踪信息(这是从服务器发送到客户端的OK数据包的一部分)。命令行客户端示例:
k5hmc34c2#
您正在尝试在SQL中“取消使用”。SQL中没有这样的命令。这意味着你不允许回到“无”状态。相反,您可以继续使用“use”并更改为另一个DB。请记住,数据库不是文件夹,您可以在使用任何其他数据库时创建数据库。