我正在读一本关于SQL的书。在那本书中有 Ad Hoc Query 这个词,我不明白。
什么是即席查询?
答案 0 :(得分:205)
Ad hoc 是拉丁语,用于“为此目的”。您可以将其称为“即时”查询,或“只是这样”查询。这是一种SQL查询,你只需要松散地输入你需要它的地方
var newSqlQuery = "SELECT * FROM table WHERE id = " + myId;
...每次执行该代码行时,这是一个完全不同的查询,具体取决于myId
的值。与即席查询相反的是预定义查询,例如存储过程,您在其中为从该表中选择的整个通用目的创建了单个查询(例如),并将该ID作为变量传递。
答案 1 :(得分:23)
Ad-Hoc Query是在发出查询之前无法确定的查询。它的创建是为了在需要时获取信息,它由动态构造的SQL组成,通常由桌面驻留查询工具构建。
检查:http://www.learn.geekinterview.com/data-warehouse/dw-basics/what-is-an-ad-hoc-query.html
答案 2 :(得分:2)
还想补充一点,ad hoc查询容易受到SQL注入攻击。我们应该尽量避免使用它并使用参数化的SQL(like PreparedStatement in Java)。
答案 3 :(得分:1)
创建一个临时查询,以从数据库服务器上可用的任何或多个合并表中提供特定记录集。这些查询通常用于一次性用途,可能不需要合并到任何存储过程中以在将来再次运行。
即席场景:您收到的请求是针对具有唯一变量集的特定数据子集。如果没有可以提供必要结果的预写查询,则必须编写一个临时查询以生成记录集结果。
存储过程是一次性使用的临时查询;即存储在数据库界面工具中的查询。然后,可以在模块或宏中依次执行这些存储过程,以按需,按计划或由其他事件触发来完成预定义的任务。
存储过程方案:每个月您都需要使用相同的表集和相同的变量来生成报告(这些变量可能是特定的预定义值,计算值例如“当前终止日期”月”或用户的输入值)。您将在第一次创建该过程作为临时查询。在测试结果以确保准确性之后,您可以选择部署此查询。然后,您可以将查询或一系列查询存储在模块或宏中,以根据需要再次运行。
答案 4 :(得分:0)
即席查询是那些尚未定义的定期查询,因此它们不包含在典型的报告或查询集中
答案 5 :(得分:0)
Ad-Hoc Query是在发出查询之前无法确定的查询。它的创建是为了在需要时获取信息,它由动态构造的SQL组成,通常由桌面驻留查询工具构建。 即席查询不驻留在计算机或数据库管理器中,而是根据数据用户的需要动态创建。
在SQL中,即席查询是一种松散类型的命令/查询,其值取决于某个变量。每次执行命令时,结果都会有所不同,具体取决于变量的值。它不能预先确定,通常是动态编程SQL查询。即席查询是短暂的,并且是在运行时创建的。
答案 6 :(得分:0)
临时语句只是T-SQL语句,它具有Where子句,而Where子句实际上可以具有像这样的文字:
Select * from member where member_no=285;
或变量:
declare @mno INT=285;
Select * from member where member_no=@mno
答案 7 :(得分:0)
即席查询-
答案 8 :(得分:-3)
即席查询是计算机定义的类型。这意味着此查询是专门设计用于在仅需要时获取任何信息。预定义。 请参阅此https://www.youtube.com/watch?v=0c8JEKmVXhU
答案 9 :(得分:-4)
在Sql Server中,“Ad Hoc Query”也用于Ad Hoc Distributed Queries。这些是通过OpenRowset或OpenDatasource在其他服务器上进行的即席查询。只有在配置后才允许使用Ad Hoc Distributed Queries。这是服务器配置选项。
答案 10 :(得分:-4)
Ad-Hoc查询是: