use命令必须带分号,否则在mysql命令行客户端中不执行而进入等待输入状态;分号是客户端判断语句结束的标志,漏写会导致光标换行无反馈,需写成use database_name;才能生效。

USE 命令必须带分号,否则不生效
在 MySQL 命令行客户端(mysql)中执行 USE database_name 时,末尾的分号 ; 不是可选的——漏掉它会导致命令被缓存但不执行,光标会换行等待更多输入,看起来像“卡住”了。这是新手最常踩的坑。
常见错误现象:mysql> USE testdb(没加分号)→ 光标下移,无任何反馈mysql>(新提示符,但数据库没切换)
- 必须写成
USE testdb; - 图形工具(如 phpMyAdmin、MySQL Workbench)点选数据库时自动补全分号,所以不会遇到这个问题
- 在脚本或批量 SQL 文件中,分号也是必需的,否则后续语句可能因上下文错乱而报错
切换前先确认目标库是否存在
直接 USE nonexistent_db; 会报错:ERROR 1049 (42000): Unknown database 'nonexistent_db'。别猜名字,先查。
推荐操作顺序:
- 执行
SHOW DATABASES;列出所有库 - 从结果中找目标库名(注意大小写:Linux 下
mydb和MYDB是两个库) - 再执行
USE mydb; - 立即验证:
SELECT DATABASE();—— 返回mydb才算成功;返回NULL说明没切过去
不切换也能跨库操作,但要注意语法
不是非得 USE 才能干活。很多场景下显式指定库名更安全,比如写迁移脚本或临时查多个库。
语法形式:
- 查表:
SELECT * FROM mydb.users; - 建表:
CREATE TABLE otherdb.log_table (...); - 删表:
DROP TABLE tempdb.tmp_data;
注意:SHOW TABLES; 这类命令不带库名时,只作用于当前默认库;要查别的库的表,得写 SHOW TABLES FROM otherdb;
USE 只影响当前会话,关掉终端就失效
USE 是会话级命令,对其他连接完全没影响。你切到 prod 库执行一条 UPDATE,同事的连接仍停在 dev 库里。
容易忽略的点:
- 用
mysql -u root -p mydb登录时,会自动执行USE mydb;,但这个行为只发生在登录瞬间;如果中途USE切到别的库,退出重连后又回到mydb - 连接池(如 Node.js 的 mysql2、Python 的 PyMySQL)里每个连接独立维护自己的当前库,不能靠一个
USE影响整个池 - 写自动化脚本时,别假设“前面 USE 过就一直有效”,每段 SQL 最好自己带库前缀或明确
USE











