最近因为要对一个用户表的每日用户增长量进行实时统计,因此使用了MySQL的视图功能。但创建视图后我发现需求有变,只需要输出每日超过30用户增长量的行,但却在『找视图背后的SQL语句』这里跌了跟头。本文将分享如何查看视图在创建时的SQL语句。

0x01

我们通常使用describe语句来查看表的字段信息,因此最初我尝试通过以下方式输出视图对应的查询语句:

use `token_iwut_2`;
describe `view_iwut_user_register_2019_statistic_date`;

但返回的数据真的只有字段信息,我们吃了闭门羹。

0x02

我将注意力放在表以外的地方,由于视图在物理意义上不存在,属于逻辑表,我尝试在INFORMATION_SCHEMA表中寻找相关踪迹。

但在phpMyAdmin中看了一眼,却没有找到VIEW相关的表:

接着我点开了这一数据库,却发现并非没有表,只是预览表数量有限(🤣)

打开表,发现里面有大量系统自动创建的视图:

那么接下来的任务就很简单:找到我们的视图。

0x03

我所使用的SQL语句非常简单

SELECT VIEW_DEFINITION FROM INFORMATION_SCHEMA.VIEWS
   WHERE TABLE_NAME = 'view_iwut_user_register_2019_statistic_date';

回车后,果然返回了我们的视图信息:

对视图内的SQL语句进行修改并确保没有语法错误,然后重新打开视图,即可发现对SQL语句的修改生效!而这个时候我们也拿到了我们想要的SQL语句,不用担心忘记『我当时是怎么建立这个视图』了!