MySQL关键字别名



我想为MySQL关键字设置别名,以便更快地键入重复(或任何,真正的(查询。示例:

select status, count(*) from orders group by status order by created_at;

->变为:

s status, c(*) f orders gb status ob created_at;

我该如何实现上述目标?我环顾四周,但不幸的是,大多数搜索都指向列和表别名,在MySQL文档中我没有看到任何提及。

我对MySQL特别感兴趣,但实际上,这可能与SQL DDL有关。

SQL关键字由RDBMS服务器中的代码解析。要更改解析器识别的关键字,您需要更改RDBMS的代码,并使用自定义更改重新编译它。

在MySQL中,关键字的拼写在以下代码文件中定义:https://github.com/mysql/mysql-server/blob/8.0/sql/lex.h

另一个侵入性较小的解决方案是使用查询重写插件。这是在MySQL 5.7中引入的,在MySQL 8.0.12中,它支持更多类型的SQL语句。

https://dev.mysql.com/doc/refman/8.0/en/rewriter-query-rewrite-plugin.html

但是使用查询重写插件,您必须枚举所有没有缩写的查询,以及您希望如何重写它们。这听起来不像是可以节省你的打字,它需要更多的打字。

在任何情况下,使用缩写关键字都会带来新的语法挑战,因为如果您使用与保留关键字冲突的标识符(表名、列名等(,则必须使用反勾号对其进行分隔:

s * f `s` w `gb` = 123 gb `s`.date;

区分关键字和标识符会变得非常混乱。

我曾与20世纪80年代ANSI SQL委员会的一位成员交换过电子邮件,他说,许多SQL关键字被故意选择为不常见的英语单词,这样它们就不太可能与用作表或列标识符的单词发生冲突。

我同意上面评论中的其他人的观点,如果你真的这么做了,你应该和你的编辑一起解决这个问题。必须有编辑器功能才能将缩写词映射为完整词。

例如,您甚至可以使用:ab命令在vim中执行此操作。看见https://vim.fandom.com/wiki/Using_abbreviations

我不会尝试更改SQL语法。

相关内容

  • 没有找到相关文章

最新更新