什么是临时查询?


167

我正在读一本有关SQL的书。那本书里有一个术语“ 临时查询”,我听不懂。

临时查询到底是什么?

Answers:


225

特设拉丁语是“为此目的”。您可以将其称为“即时”查询或“正好”查询。您只是在需要的地方松散地键入这种SQL查询

var newSqlQuery = "SELECT * FROM table WHERE id = " + myId;

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


17
@David Hedlund您的查询容易受到攻击SQL injection attacks...您必须使用参数。
Parid0kht

45
@Paridokht:当然可以。我不提倡这种用法,而是在解释即席查询的概念,这就是问题所在。
David Hedlund 2013年

12
@DavidHedlund:是的,我知道..但是在您的答案中最好提一下它,因为有些用户读过此书,对这种攻击一无所知。
Parid0kht

46
如果用户阅读了此书,但对SQL注入一无所知,那么他们就不会从事任何可能引起黑客兴趣的事情。让我们别走到极端……
Michal B.

7
作为拥有多年经验的开发人员,我在寻找与我所寻找的东西完全不同的东西时学到了很多东西。因此,恕我直言,添加一个句子,就像“ ...不要忘记对myId进行必要的控制和清理操作 ”不会造成任何伤害。
scaryguy 2015年


1

还想补充一点,即席查询容易受到SQL注入攻击。我们应该尽量避免使用它,而应使用参数化的SQL(例如Java中的PreparedStatement)。


7
临时查询容易受到SQL注入的攻击。接受用户输入的未参数化查询容易受到SQL注入的攻击。
2013年

@Ben临时查询始终未参数化。如果我们不向用户公开变量,就不会受到SQL注入攻击。但是重点是临时查询对SQL注入是有风险的。
xli 2013年

1

即席查询是在发出查询之前无法确定的查询。创建它是为了在需要时获取信息,它由动态构造的SQL组成,该SQL通常由桌面驻留的查询工具构造。临时查询不驻留在计算机或数据库管理器中,而是根据数据用户的需要动态创建的。

在SQL中,临时查询是一种松散类型的命令/查询,其值取决于某些变量。每次执行命令时,结果都会有所不同,具体取决于变量的值。它不能预先确定,通常在动态编程SQL查询下进行。临时查询是短暂的,是在运行时创建的。


1

一个即席查询是一个建立提供具体的记录从任一或多个合并的DB服务器上的可用表。这些查询通常用于一次性用途,可能不需要合并到任何存储过程中以在将来再次运行。

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

存储过程超出了一次性使用的即席查询;即,查询存储在数据库接口工具中。然后,可以在模块或宏中依次执行这些存储过程,以按需,按计划或由另一个事件触发来完成预定义的任务。

存储过程方案:每个月您都需要使用相同的表集和相同的变量来生成报告(这些变量可以是特定的预定义值,诸如“当月末”之类的计算值或用户的输入值)。您将在第一次创建该过程作为临时查询。在测试结果以确保准确性之后,您可以选择部署此查询。然后,您可以将查询或一系列查询存储在模块或宏中,以根据需要再次运行。


0

临时查询是那些没有定义的查询,它们是定期不需要的,因此它们不包含在典型的报告或查询集中


你能解释一下你在写些什么吗?什么是“典型集”?你是说编译代码?
2013年

0

临时语句只是T-SQL语句,它具有Where子句,而Where子句实际上可以具有如下文字:

Select * from member where member_no=285;

或变量:

declare @mno INT=285;
Select * from member where member_no=@mno

-4

临时查询为:

  1. 预先计划的问题。
  2. 预定问题。
  3. 一时兴起的问题。
  4. 不会返回任何结果的问题。

用SQL表示这意味着什么?另外,并非所有“不会返回任何结果的问题”。是临时的。
jumxozizi


-6

在Sql Server中,“临时查询”也用于临时分布式查询。这些是通过OpenRowset或OpenDatasource在其他服务器上的临时查询。仅在配置后才允许临时分布式查询。这是服务器配置选项。


这与sql Server无关。问题不是关于特定的企业解决方案,而是关于对即席查询的含义的一般理解
亚瑟,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.