这个问题与我要问的类似: 有没有办法创建 SQL“别名”?
但不完全相同 - 我正在学习 mysql,当我使用不同的命令时,我将经常运行 select 命令。 有没有办法可以给我起别名:
从测试数据库中选择*
到
ls
或者同样相似的东西? 理想情况下,我可以将“select * from”别名为“show”,然后只需键入“show testdb”。
在函数中使用别名可以帮助您将参数传递给别名,例如
example query =
select * from testdb where param = 'test param'
sftb test param
alias sftb='function sftb(){ mysql -e "select * from testdb where param = '$1'"; };sftb'
可以使用帮助命令找到一些附加选项
\?
:
...
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 那样通过管道传输到分页器)。
两种选择都有优点和缺点。对于简单的“从表中选择*”,它不会节省您太多的打字时间,但对于更复杂的情况,这些命令可能很有用。