菜鸟科技网

如何补全MySQL命令?

使用 MySQL 客户端自带的补全功能 (推荐,最简单)

MySQL 5.7.8 版本开始,官方的 MySQL 命令行客户端 (mysql) 就内置了强大的自动补全功能,包括关键字、数据库名、表名、列名等。

如何补全MySQL命令?-图1
(图片来源网络,侵删)

如何启用和配置

  1. 启动 MySQL 客户端时启用 最简单的方法是在登录时使用 -A--auto-rehash 选项。

    # -A 或 --auto-rehash
    mysql -u your_username -p -A

    注意-A 选项会让客户端在启动时读取所有数据库名、表名和列名等信息,如果数据库对象非常多,启动会稍微慢一点,但这是“一劳永逸”的方式。

  2. 在客户端运行时启用 如果你已经登录了,但补全功能没开启,可以执行以下命令:

    -- 查看当前补全状态
    \s
    -- 如果看到 auto-rehash: OFF,可以执行以下命令开启
    \rehash

    注意\rehash 只会读取当前数据库中的表和列名,要读取所有数据库,需要先 use 一个数据库,再执行 \rehash,或者退出后用 -A 参数重新登录。

    如何补全MySQL命令?-图2
    (图片来源网络,侵删)

如何使用补全功能

一旦启用,补全功能就会自动工作。

  • 补全关键字 (如 SELECT, FROM, WHERE) 输入关键字的前几个字母,然后按 Tab 键。

    sel<Tab>  -->  SELECT
    fr<Tab>   -->  FROM
    wh<Tab>   -->  WHERE
  • 补全数据库名use 命令后,按 Tab 键会列出所有数据库名。

    mysql> use <Tab>
    information_schema  mydb                  performance_schema  sys
    mysql> use mydb
  • 补全表名 在数据库名后、或在 FROM, JOIN, UPDATE, DESCRIBE 等关键字后,按 Tab 键会列出当前数据库的所有表名。

    如何补全MySQL命令?-图3
    (图片来源网络,侵删)
    mysql> SELECT * FROM <Tab>
    users  products  orders
    mysql> DESCRIBE <Tab>
    users  products  orders
  • 补全列名 这是它最强大的地方,在表名后,输入 然后按 Tab 键,会列出该表的所有列名。

    mysql> SELECT * FROM users.<Tab>
    id      email   name    created_at
    mysql> SELECT users.name, users.<Tab>
    id      email   name    created_at
  • 补全存储过程/函数名 和表名类似,在 CALLSELECT 后按 Tab 键。

  • 查看可用选项 在输入不完整的关键字后,连续按两次 Tab 键,会列出所有可能的补全选项。

    mysql> SELECT <Tab><Tab>
    -- 会列出所有可用的列名(如果前面有表名)或所有关键字

使用 rlwrap 实现更强大的命令行历史和补全

mysql 客户端的默认终端体验比较基础,没有方向键上下翻历史、没有行内编辑等功能。rlwrap 是一个“ readline 包装器”,可以为任何命令行程序添加这些功能,包括更好的补全。

安装 rlwrap

在基于 Debian/Ubuntu 的系统上:

sudo apt-get update
sudo apt-get install rlwrap

在基于 RedHat/CentOS 的系统上:

sudo yum install rlwrap
# 或者对于较新的系统
sudo dnf install rlwrap

使用 rlwrap 启动 MySQL

只需在 mysql 命令前加上 rlwrap 即可。

# 使用 rlwrap 启动,并启用 MySQL 自身的补全功能 (-A)
rlwrap -A -i -s 30000 -H ~/.mysql_history mysql -u your_username -p

参数解释:

  • -A: 启用 MySQL 的自动补全功能。
  • -i: 忽略大小写进行补全,体验更好。
  • -s 30000: 设置历史记录文件大小。
  • -H ~/.mysql_history: 指定历史记录文件,这样你下次启动时仍然可以看到之前的命令。

rlwrap 带来的额外功能

  • 方向键上下翻历史:按 可以找到上一条命令,按 可以找到下一条命令。
  • Ctrl+R 反向搜索历史:按下 Ctrl+R 然后输入关键词,可以搜索历史命令。
  • 行内编辑:可以使用 Ctrl+A (行首), Ctrl+E (行尾), Ctrl+U (删除光标前所有内容) 等标准快捷键。
  • Tab 补全:除了 MySQL 自身的补全,rlwrap 还提供文件名补全等。

使用 MySQL Shell (MySQL Shell)

对于现代化的数据库管理和开发,MySQL Shell 是官方推荐的工具,它不仅功能强大,而且其 JavaScript 和 Python 模式下的补全功能非常智能和强大。

安装 MySQL Shell

请从 MySQL 官方下载页面 下载并安装。

使用 MySQL Shell 的补全功能

启动 MySQL Shell:

mysqlsh

连接到 MySQL 服务器:

\sql  # 切换到 SQL 模式,也可以直接使用 \connect root@localhost
\connect your_user@your_host

补全功能示例:

  • 补全对象:输入对象名的一部分,按 Tab 键。

    MySQL  localhost:33060+ ssl  SQL > USE mydb;
    MySQL  localhost:33060+ mydb  SQL > SEL<Tab>  -->  SELECT
    MySQL  localhost:33060+ mydb  SQL > SELECT * FROM <Tab>
    users  products  orders
    MySQL  localhost:33060+ mydb  SQL > SELECT users.<Tab>
    id      email   name    created_at
  • 智能提示:MySQL Shell 会根据上下文提供智能提示,在 WHERE 子句中输入列名后,它会提示可能的数据类型或函数。

  • 代码补全:在 JavaScript 模式下,对于全局对象和 API 也有很好的补全。

    MySQL  localhost:33060+ mydb  JS > db.<Tab>
    -- 会列出 db 对象的所有可用方法,如 db.createCollection(), db.getCollection() 等

总结与推荐

方法 优点 缺点 适用场景
MySQL 客户端内置补全 - 无需额外安装
- 功能强大,覆盖关键字、表、列等
- 官方原生支持
- 终端体验基础(无历史翻页等)
- 启动时可能稍慢
日常开发和简单管理,是最直接、最推荐的方式。
rlwrap 包装 - 拥有完美的命令行体验(历史、搜索、编辑)
- 可以增强 MySQL 客户端的功能
- 需要额外安装 rlwrap
- 增加了一层包装,可能有极微小性能开销
重度终端用户,追求极致的命令行操作体验和效率。
MySQL Shell - 现代化、功能强大
- 支持多语言模式 (JS/SQL/Py)
- 智能提示和 API 补全
- 可用于 DBA 和开发者
- 需要学习新工具
- 占用资源相对多一些
高级用户、DBA、开发者,特别是需要编写脚本或进行复杂数据库管理时。

给新手的建议:

直接使用 mysql -u your_username -p -A 登录,这是最简单、最直接、官方推荐的方式,能满足 95% 以上的补全需求,当你觉得缺少命令历史翻页等功能时,再考虑安装 rlwrap

分享:
扫描分享到社交APP
上一篇
下一篇