什么是Ad Hoc查询?

zih*_*ado 160 sql adhoc-queries

我正在读一本关于SQL的书.在那本书中有Ad Hoc Query这个术语,我不明白.

什么是即席查询?

Dav*_*und 211

Ad hoc是为了"为此目的"拉丁语.您可以将其称为"即时"查询,或"只是这样"查询.这是一种SQL查询,你只需要松散地输入你需要它的地方

var newSqlQuery = "SELECT * FROM table WHERE id = " + myId;
Run Code Online (Sandbox Code Playgroud)

...每次执行该代码行时,这是一个完全不同的查询,具体取决于...的值myId.与即席查询相反的是预定义查询,例如存储过程,您在其中为从该表中选择的整个通用目的创建了单个查询(例如),并将ID作为变量传递.

  • 如果用户阅读它并且不了解SQL注入,那么他们就不会处理任何可能引起黑客兴趣的事情.我们不要走极端...... (44认同)
  • @Paridokht:当然可以.我不主张使用,我正在解释即席查询的概念,这是一个问题. (43认同)
  • @David Hedlund你的查询容易受到"SQL注入攻击"......你必须使用参数. (15认同)
  • @DavidHedlund:是的,我理解......但是在你的回答中提及它可能会更好,因为有些用户会阅读此内容并且不知道这种攻击. (11认同)
  • 作为一名拥有多年经验的开发人员,我一直在学习很多东西,而我正在寻找与我所寻找的完全不同的东西.所以恕我直言添加一个句子,就像'***...不要忘记为myId做必要的控制和消毒***'不会造成任何伤害. (5认同)
  • 尽管这可能是最简单的即席查询类型,但此答案并未充分突出“即席”和“预定义”查询之间的区别。在解释中,`id` 是预定义存储过程和即席查询中的动态值。这可能会让初学者读者感到困惑。 (3认同)
  • @HeyJude是的。通常使用诸如CREATE PROCEDURE之类的语法创建存储过程。它存储在DBMS中,DBMS可以优化查询的执行。相反,临时查询未存储在DBMS上,引擎必须经过所有解析,查询计划等才能执行查询。 (2认同)

hal*_*bay 24

Ad-Hoc Query是在发出查询之前无法确定的查询.它的创建是为了在需要时获取信息,它由动态构造的SQL组成,通常由桌面驻留查询工具构建.

检查:http://www.learn.geekinterview.com/data-warehouse/dw-basics/what-is-an-ad-hoc-query.html


Eli*_*ork 5

临时查询是为了从数据库服务器上可用的任何或多个合并表提供特定记录集而创建的查询。这些查询通常用于一次性目的,并且可能不需要合并到任何存储过程中以便将来再次运行。

\n\n
\n

临时场景:您收到对具有唯一变量集的特定数据子集的请求。如果没有预先编写的查询可以提供必要的结果,则必须编写临时查询来生成记录集结果。

\n
\n\n

除了单次使用 Ad-hoc 查询之外,还有存储过程;即存储在数据库接口工具中的查询。然后,可以在模块或宏内按顺序执行这些存储过程,以按需、按计划或由另一个事件触发来完成预定义的任务。

\n\n
\n

存储过程场景:每个月您需要从同一组表和相同变量生成报告(这些变量可能是特定的预定义值、计算值,例如当月的 \xe2\x80\x9cend\xe2\x80\ x9d,或用户\xe2\x80\x99s 输入值)。您第一次将该过程创建为临时查询。测试结果以确保准确性后,您可以选择部署此查询。然后,您可以将查询或一系列查询存储在模块或宏中,以便根据需要再次运行。

\n
\n