2

我使用 mysql 5.6.11-win32。

我不知道是否有办法告诉 mysql 将任何查询存储在 mysql 的数据库中(如 information_schema 或 mysql),但不在我自己的数据库中。

我想输入查询,然后通过一些 mysql 特殊功能存储它。稍后在以后的会话中,我想检索该查询并执行它。就像我们使用存储过程一样。

是否可以将查询存储在 mysql 中以供以后执行?

谢谢!

4

2 回答 2

3

如果“查询”是指“选择查询”,那么您要创建视图。视图本质上创建了一个伪表,您甚至可以将其包含在更大的查询中。

例子:

CREATE VIEW my_view AS SELECT something FROM my_table WHERE some_twisted_condition;

SELECT * FROM my_view; -- returns the result of "SELECT something FROM my_table WHERE some_twisted_condition;"
SELECT * FROM my_view JOIN another_table USING something;
于 2013-08-14T09:35:08.707 回答
1

听起来你想要一些类似于MySQL 存储过程或函数的东西:

MySQL 5.0 支持存储例程(过程和函数)。存储例程是一组可以存储在服务器中的 SQL 语句。完成此操作后,客户端无需继续重新发出单个语句,而是可以参考存储的例程。

存储例程需要 mysql 数据库中的 proc 表。该表是在 MySQL 5.0 安装过程中创建的。如果您从早期版本升级到 MySQL 5.0,请务必更新您的授权表以确保 proc 表存在。请参阅第 4.4.9 节,“mysql_upgrade - 检查表以进行 MySQL 升级”。

这是在许多 RDBMS 中使用的通用习惯用法,用于提供引用的功能并将数据逻辑与应用程序层分离。

另一种选择是使用作为伪表的视图,它们是跨一个或多个表应用的查询的结果。

于 2013-08-14T09:31:35.087 回答