有没有简单的方法在mysql中创建命令别名?

问题描述 投票:0回答:3

这个问题与我要问的类似: 有没有办法创建 SQL“别名”?

但不完全相同 - 我正在学习 mysql,当我使用不同的命令时,我将经常运行 select 命令。 有没有办法可以给我起别名:

从测试数据库中选择*

ls

或者同样相似的东西? 理想情况下,我可以将“select * from”别名为“show”,然后只需键入“show testdb”。

mysql command-line-interface alias
3个回答
10
投票

我想到了三个想法:

  1. 一个存储过程,所以你最终会做“调用 显示('testdb')”

  2. a shell 别名,因此您运行“show testdb”将其映射到 “mysql -e '从 testdb 选择*'”

  3. 吸起它并输入命令。


1
投票

在函数中使用别名可以帮助您将参数传递给别名,例如
example query =

select * from testdb where param = 'test param'

创建的别名 =
sftb test param

要创建这样的别名,您可以在 bashrc 文件中编写类似的内容。
alias sftb='function sftb(){ mysql -e "select * from testdb where param = '$1'"; };sftb'


0
投票

可以使用帮助命令找到一些附加选项

\?

...
source    (\.) Execute an SQL script file. Takes a file name as an argument.
...
system    (\!) Execute a system shell command.
...

来源

让我们从源选项开始。在当前工作目录中创建 SQL 脚本

select.sql
:

SET @s = CONCAT('SELECT * FROM ', @table);
PREPARE stmt1 FROM @s; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 

您需要使用准备好的语句才能从变量中指定的表中进行选择。

然后,在 mysql 客户端中,您可以通过设置变量并获取脚本来调用它:

SET @table='Account'; \. select.sql;

SET @table='Account'; source select.sql;

系统

您可以创建一个 bash 脚本,使其可执行并确保它位于您的 PATH 中(例如在

~/.local/bin
中):

#!/bin/bash
set -euo pipefail
mysql --execute "select * from $1"

然后,在mysql客户端中,你可以用

调用它
\! select-all Account

system select-all Account

请注意,输出不会使用默认分页器(但您可以像脚本中的 less 那样通过管道传输到分页器)。


两种选择都有优点和缺点。对于简单的“从表中选择*”,它不会节省您太多的打字时间,但对于更复杂的情况,这些命令可能很有用。

© www.soinside.com 2019 - 2024. All rights reserved.