内容


使用 SQL 和 XQuery 编辑器更有效地创建脚本

利用编辑器中的新功能

Comments
免费下载:IBM® DB2® Express-C 9.7.2 免费版 或者 DB2® 9.7 for Linux®, UNIX®, and Windows® 试用版
下载更多的 IBM 软件试用版,并加入 IBM 软件下载与技术交流群组,参与在线交流。

简介

SQL 和 XQuery 编辑器可以帮助您创建和运行包含 SQL 和 XQuery 语句的 SQL 脚本。编辑器功能包括语法突出显示、SQL 格式化、内容协助、语句解析和检验,以及语义检验。

可使用多个数据库解析器检验脚本的语法,并对多个数据库连接以串行方式运行脚本。此外,您可以从编辑器导出导入 SQL 脚本。通过编辑器,您还可以安排脚本的执行和访问 IBM 工具,帮助您分析和调优 SQL 查询的性能。

本文介绍了如何有效地使用新功能帮助您更有效地开发 SQL 脚本。编辑器中的功能可用于工作台支持的所有数据服务器,明确指出不支持的除外。

SQL 和 XQuery 编辑器可用于以下基于 IBM Eclipse 的产品:

参考资料 部分提供了 Integrated Data Management 信息中心中有关各种产品描述的主题链接。

编者按:本文最初发表于 2010 年 11 月,由 Hardik Patel 和 Chat Chatterton 撰写,此处为更新版。

创建一个 SQL 脚本

您可以从工作台的不同地方创建一个 SQL 脚本。在本文中,我们是从 Data Source Explorer 视图中创建这些脚本。对于创建脚本的其他方法,请参见 参考资料 部分中的 在 SQL 和 XQuery 编辑器中创建 SQL 和 XQuery 语句

在本文中,此脚本是在 DB2 for Linux, UNIX, and Windows 数据连接的 SAMPLE 数据库上创建的。如果您想快速过一遍本文中所描述的过程,那么您可以使用自己的数据库或 SAMPLE 数据库。贵公司可能在您能连接上的服务器提供了 SAMPLE 数据库。如果您要在您的系统中生成 SAMPLE 数据库的本地副本,请参见 参考资料 部分中的 创建样例数据库 链接。

连接到 Data Source Explorer 视图的数据库后,您就可以创建一个 SQL 脚本了。单击数据库连接,然后单击在工具栏上的 New SQL Script 按钮,如图 1 所示。

图 1. Data Source Explorer 视图中的新 SQL 脚本工具栏按钮
Data Source Explorer 视图中的新 SQL 脚本工具栏按钮的屏幕截图
Data Source Explorer 视图中的新 SQL 脚本工具栏按钮的屏幕截图

在 SQL 和 XQuery 编辑器中,会为所选的连接打开一个空脚本。连接信息显示在工具栏和 Command 窗格的 Configuration 页面上,如图 2 所示。Command 窗格是一个选项卡式的窗口,在控制脚本配置、验证、特殊寄存器和性能指标的编辑器中进行操作时,可以显示或隐藏它。

图 2. 编辑器工具栏和 Configuration 页面中显示的数据库连接
SQL 和 XQuery 编辑器中工具栏及 Command 窗格的屏幕截图。
SQL 和 XQuery 编辑器中工具栏及 Command 窗格的屏幕截图。

您可以通过单击连接旁边的控制箭头,在编辑器工具栏中显示或隐藏数据库连接信息,如图 3 所示。

图 3. 编辑器工具栏中显示的数据库连接信息
SQL 和 XQuery 编辑器工具栏中的数据库连接信息的屏幕截图。
SQL 和 XQuery 编辑器工具栏中的数据库连接信息的屏幕截图。

更改数据库连接

通过 Data Source Explorer 视图中的连接创建 SQL 脚本时,该脚本会连接到关联的数据库。编辑器工具栏中的信息显示有关此连接和数据库的信息。

在开发您的 SQL 脚本时,该脚本连接到的数据库决定内容辅助中可用信息,内容辅助是一个可以帮助您开发 SQL 语句的编辑器功能。供应商和数据库版本决定您的 SQL 语句的语法检验。当您运行的 SQL 脚本时,数据库连接也可能会影响结果。

您可以通过单击 Configuration 页面上的 Select 按钮更改脚本连接的数据库。如果 Data Source Explorer 视图中有两个或多个数据库连接,那么在 Select Connection Profile 向导中选择一个不同的连接配置文件,如图 4 所示。

图 4. 在 Select Connection Profile 向导中选择的不同连接配置文件
Select Connection Profile 向导与不同连接配置文件的屏幕截图。
Select Connection Profile 向导与不同连接配置文件的屏幕截图。

如果您只连接到一个数据库,那么您可以在 Select Connection Profile 向导中单击 New,然后在 New Connection Profile 向导中定义一个新的连接。

有关更改数据库连接的更多信息,请参见 参考资料 部分的 在 SQL 和 XQuery 编辑器中更改数据库连接

您还可以断开脚本与数据库的连接。这个非常用的,例如,在您想要脱机工作时。要断开连接脚本,选择下拉列表中的 No Connection,如图 5 所示。

图 5. 断开脚本与数据库的连接
屏幕截图显示 Connection 页面的下拉列表中选中的 'No Connection'。
屏幕截图显示 Connection 页面的下拉列表中选中的 'No Connection'。

选择了 No Connection 之后,Command 窗格将自动隐藏,如图 6 所示,但是您可以随时恢复该窗格。

图 6. 无数据库连接和隐藏的命令窗格
无数据库连接和 SQL 和 XQuery 编辑器中隐藏的 Command 窗格的屏幕截图。
无数据库连接和 SQL 和 XQuery 编辑器中隐藏的 Command 窗格的屏幕截图。

当您要重新连接到数据库时,请单击编辑器工具栏上的 No Connection 链接,命令窗格将自动显示。在下拉列表中选择您要连接。

有关断开脚本与数据库连接的更多信息,请参见 参考资料 部分的 在 SQL 和 XQuery 编辑器中断开脚本与数据库的连接。

开发脚本

如图 7 所示,Command 窗格的 Validation 页面包含了几个控件,可以在 SQL 脚本中创建报表时使用。您可以检验您正创建的语句的语法或语义,或两者都检验。此外,您还可以更改脚本中所有语句的语句终止符。

图 7. Command 窗格中的 Validation 页面
SQL 和 XQuery 编辑器 Command 窗格中的 Validation 页面的屏幕截图。
SQL 和 XQuery 编辑器 Command 窗格中的 Validation 页面的屏幕截图。

检验 SQL 和 XQuery 语句中的语法

在编辑器中键入 SQL 和 XQuery 语句时,检验这些语句的语法。解析语句以确定语句中的关键字及其位置是否有效。

在默认情况下,选择 Validate statement syntax for current configuration 选项,这意味着所选的解析器基于脚本所连的数据库的类型。例如,假设您要开发一个脚本来创建一个 SALES 表,并且将其索引放在 SAMPLE 数据库的 DB2ADMIN 模式中。在图 8 中,该脚本在选择了 DB2 for Linux, UNIX, and Windows (V9.7) 解析器的情况下显示没有语法错误。

图 8. 使用与脚本关联的当前连接检验语句
编辑器中 SQL 脚本使用 DB2 for Linux、UNIX 和 Windows 解析器显示没有语法错误的屏幕截图
编辑器中 SQL 脚本使用 DB2 for Linux、UNIX 和 Windows 解析器显示没有语法错误的屏幕截图

您可能需要针对不同类型的数据库检验脚本,例如,如果您计划导出脚本并将其用在另一种类型的数据库中。您可以选择不同的解析器,而无需更改脚本连接的数据库。选择 Validate statement syntax 选项并在下拉列表中选择一个不同的解析器,所选的解析器会检验该脚本中的语句。目前,以下类型数据库的解析器可以在 SQL 和 XQuery 编辑器中使用:

  • DB2 for Linux, UNIX, and Windows (V9.7)
  • DB2 for Linux, UNIX, and Windows (V9.8)
  • DB2 for z/OS (V10)
  • DB2 for z/OS (V9)
  • DB2 for i5/OS
  • Informix Dynamic Server

注意:版本特定的语法检查仅供 DB2 for Llinux、UNIX 和 Windows 以及 DB2 for z/OS 使用,这意味着 V9.7 之前的任何 DB2 for Linux, UNIX, and Windows 版本将仍使用 V9.7 解析器,V9.8 之后的任何版本将使用 V9.8 解析器。这同样适用于 V9 之前和 V10 之后的 DB2 for z/OS。DB2 for i5/OS 和 Informix Dynamic Server 将使用最新支持的解析器。

例如,假设您想要使用一个脚本,该脚本可创建销售表,并其索引放置于 DB2 for z/OS 服务器的数据库中。要针对目标数据库检验该脚本,您只要将解析器更改为 DB2 for z/OS (V10),在这样做的同时,该脚本仍连接到 SAMPLE 数据库。

在这种情况下,DB2 for z/OS (V10) 解析器对 CREATE INDEX 语句中的 ALLOW REVERSE SCANS 子句无效。编辑器在左右页边用红色标记检验错误,并用红色波浪线标出无效语法。如图 9 所示,将鼠标指针移到页边的错误标记上,您可以在弹出窗口中看到语法错误的说明。

图 9. 使用 DB2 for z/OS (V10) 解析器检验的脚本语句
使用 DB2 for z/OS 解析器显示一个脚本语法错误的屏幕截图。
使用 DB2 for z/OS 解析器显示一个脚本语法错误的屏幕截图。

如果您愿意,您可以通过选择 Validate statement syntax 列表中的 No validation 停止检验语法。

如果您脱机工作(即在 Configuration 页面选择了 No Connection),那么您仍可以检验您正在编写的 SQL 和 XQuery 语句中的语法。在 Validation 页面中,选择相应的数据库类型解析器,如图 10 所示。为某个数据库类型进行检证后,您可以继续使用该解析器针对不同的数据库类型进行检验。

图 10. 在没有数据连接的情况下离线检验 SQL 语句
编辑器中工具栏上显示 No Connection,并且 DB2 for LUW 选中作为语法检验的解析器。
编辑器中工具栏上显示 No Connection,并且 DB2 for LUW 选中作为语法检验的解析器。

有关检验 SQL 和 XQuery 语句的更多信息,请参见 参考资料 部分的 检验 SQL 和 XQuery 语句

验证 SQL 语句的语义

您还可以检验对脚本所连数据库中的表格、列和存储过程的引用。数据库对象引用仅在 SQL DML 语句中检验。Validate database object references 选项的状态决定在您键入时是否检验语义。

语义检验仅与脚本当前连接的数据库相关联。Validate statement syntax 列表中选定的解析器对语义检证没有影响。不论您是否为语法检验选择解析器,均可以在脚本开发过程中的任何时候选择复选框。

图 11 显示对 SAMPLE_SALES1 表格引用的语义错误,该表不存在于 SAMPLE 数据库的 DB2ADMIN 模式中。编辑器为语义和语法错误显示相同错误指示符。

图 11. 检验 DML 语句中的数据库对象引用错误
SQL 和 XQuery 编辑器中 DML 语句的语义错误的屏幕截图。
SQL 和 XQuery 编辑器中 DML 语句的语义错误的屏幕截图。

有关检验 SQL 语句中的数据库对象引用的更多信息,请参见 参考资料 部分的 检验 SQL 和 XQuery 语句

更改语句终止符

当您的 SQL 脚本中有多个语句时,每条语句之间必须使用语句终止符分隔。在默认情况下,SQL 和 XQuery 编辑器使用分号 (;)。您可以在 (Window > Preferences) 中更改默认的语句终止符,它将应用于在编辑器中创建的所有脚本。

可以使用 Command 窗格中 Validation 页面上的字段为特定脚本设置语句终止符。在 SQL 脚本中设置的语句终止符每次在 SQL 和 XQuery 编辑器中打开该脚本时仍然存在。

在给定的脚本中,您只可以使用一个语句终止符。那就是,在 SQL 脚本中的所有语句都必须使用相同的语句终止符。在包含现有语句的 SQL 脚本中设置语句终止符时,编辑器不会自动更新现有的语句终止符。相反,您必须手动更新脚本中所有现有的语句终止符。

图 12 展示了一个示例,在将语句终止符设置为一个感叹号 (!) 之后,发生语法检验错误,并且没有更新现有的语句终止符。如果您停止语法检验后运行脚本,将会出现一个意外的标记错误。

图 12. 更改默认终止符后出现的无效语句终止符
编辑器中默认分号语句终止符标记为错误的屏幕截图。
编辑器中默认分号语句终止符标记为错误的屏幕截图。

有关语句终止符的更多信息,请参见 参考资料 部分的 SQL 语句终止符

SQL 和 XQuery 编辑器中的内容辅助

像许多其他产品功能一样,SQL 和 XQuery 编辑器提供了内容辅助来创建 SQL 语句。类似于 Java 编辑器的 Eclipse,按下组合键 Ctrl + 空格键 可激活内容辅助。

要借助内容辅助创建 SQL 语句,首先键入表达式 select * from,然后按下 Ctrl + 空格键。此步骤的顺序将为所选的数据库表显示内容辅助函数。当引用完全限定的表名时,您可以在多个步骤中利用内容辅助,一个用于模式名称,如图 13 中标签 1 所示;另一个用于表名,如标签 2 中所示。

图 13. SQL 和 XQuery 编辑器中引用模式和表格的内容辅助
在编辑器可用 SQL 语句中引用模式和表格的内容辅助的屏幕截图。
在编辑器可用 SQL 语句中引用模式和表格的内容辅助的屏幕截图。

向 SQL 语句的 FROM 子句添加所需的表格后,内容辅助功能还可以帮助您找到该表格中的列。您可以使用此功能帮助您完成 SQL 语句。图 14 中显示了要使用内容辅助功能添加到 SQL 语句中 SELECT 子句的列 COLOR

图 14. SQL 和 XQuery 编辑器中引用表格列的内容辅助
屏幕截图显示在编辑器可用的 SQL 语句中引用表格列的内容辅助。
屏幕截图显示在编辑器可用的 SQL 语句中引用表格列的内容辅助。

特殊寄存器

通过 Command 窗格中的 Special Registers 页面,您可以指定用来运行 SQL 的当前模式或路径,否则将不基于任何 XQuery 语句。

注意:您必须连接到 DB2 for z/OS 或 DB2 for Linux, UNIX, and Windows 数据服务器才能指定这些寄存器。

在使用 SQL 脚本部署和运行数据对象时,使用 Current schema 寄存器。它可处理不合格的数据库对象引用。在默认情况下,如果您的 SQL 未指定模式,那么将会在 Configuration 页面上显示当前连接配置文件的数据库名称。若要更改它,单击 Select 按钮,然后从 Select a schema 窗口中选择一个不同的模式,如图 15 所示。

图 15. Select a Schema 窗口打开以供更改当前模式
屏幕截图显示如何更改 SQL 和 XQuery 编辑器的当前模式。
屏幕截图显示如何更改 SQL 和 XQuery 编辑器的当前模式。

在使用 SQL 脚本部署和运行数据库对象时,使用 Current path 寄存器。它会处理动态预备的 SQL 语句中不合格的函数名称、过程名称、数据类型名称、全局变量名称和模块对象名称。您可以通过单击 Select 按钮将模式添加到 Current path,如图 16 所示。从打开的 Select schemas 窗口中选择一个或多个模式。

图 16. Select Schemas 窗口打开以供更改当前路径
屏幕截图显示如何在 SQL 和 XQuery 编辑器中更改当前路径。
屏幕截图显示如何在 SQL 和 XQuery 编辑器中更改当前路径。

运行脚本

设置运行首选项

要确定您正在开发的 SQL 脚本是否返回预期的结果,您需要运行它。但首先,您可能要修改 SQL 脚本运行的方式。可以使用 Command 窗格的 Configuration 页面的运行首选项实现此操作,如图 17 所示。

图 17. 运行首选项
屏幕截图显示如何更改 SQL 和 XQuery 编辑器中的运行首选项。
屏幕截图显示如何更改 SQL 和 XQuery 编辑器中的运行首选项。
  • Run method
    您可以使用此首选项为 SQL 和 XQuery 编辑器设置执行环境。可用的执行环境是 JDBC 和 Command Line Processor。

    注意:只有数据服务器是 DB2 for Linux, UNIX, and Windows 时才能使用 Command Line Processor 选项。

  • Refresh explorer view after this script is run
    选择此选项可在运行脚本之后刷新 Data Source Explorer 或 Administrator Explorer 视图。

  • Open new connection when script is run
    该选项可创建与目标数据库的新连接,用于运行您的脚本。在默认情况下,它处于选中状态。

    注意:如果希望取消选中此选项,Run method 必须设置为 JDBC 环境。这样做之后,将使用 Connection 字段的信息,并禁用 Commit on completion of scriptRoll Back on completion of script 选项。

  • On success
    这些选项指定 SQL 语句在成功运行时的处理方式。每个选项的可用性取决于选择的 Run method。更多信息见下表。

  • On error
    这些选项指定 SQL 语句在发生错误时的处理方式。每个选项的可用性取决于选择的 Run method。更多信息见下表。

JDBC 运行方法和首选项

下表详细说明了 JDBC 的环境中如何在语句成功运行,或者遇到错误时处理语句:

On SuccessOn Error结果
每条语句后提交继续如果语句成功,它将提交到指定的数据库。如果出现错误,将运行下一条语句。
每条语句后提交停止如果语句成功,它将提交到指定的数据库。如果出现错误,脚本将停止运行。
脚本完成后提交继续如果脚本中的所有语句都成功,所有语句都提交到指定的数据库。如果出现错误,将运行下一条语句,成功的所有语句都将提交到指定的数据库。
脚本完成后提交停止并提交如果脚本中的所有语句都成功,所有语句都提交到指定的数据库。如果出现错误,脚本将停止运行,成功运行的所有语句都将提交到指定的数据库。
完成时提交停止并回滚如果脚本中的所有语句都成功,所有语句都将提交到指定的数据库。如果出现错误,该脚本会停止运行,成功的所有语句都将都回滚。
脚本完成后回滚继续如果脚本中的所有语句都成功,所有语句都将回滚。如果出现错误,将运行的脚本中的下一个语句,所有成功的语句都将回滚。
脚本完成时回滚停止并回滚如果脚本中的所有语句都成功,所有语句都将回滚。如果出现错误,将脚本将停止运行,所有成功的语句都将回滚。

Command Line Processing 运行方法和首选项

下表详细说明了在命令行处理器环境中语句成功运行,或者遇到错误时如何处理语句:

On SuccessOn Error结果
每条语句后提交继续如果语句成功,它将提交到指定的数据库。如果出现错误,将运行下一条语句。
每条语句后提交停止如果语句成功,它将提交到指定的数据库。如果出现错误,脚本将停止运行。
用户管理的提交继续如果脚本中包含 COMMIT 语句,则该语句将在此处提交。如果出现错误,将运行下一条语句。
用户管理的提交停止并提交如果脚本中包含 COMMIT 语句,则该语句将在此处提交。如果出现错误,该脚本将停止运行,所有运行成功的语句都将提交到指定的数据库。

SQL Results 视图

现在,您已经了解了 Run 首选项,可以运行 SQL 脚本了。单击编辑器工具栏的 Run SQL 按钮( 编辑器工具栏 Run SQL 按钮的屏幕截图)来执行 SQL 脚本中的这些语句。

将根据当前连接到的数据库运行脚本。然后,运行脚本的进度和结果将显示在 SQL Results 视图中,如图 18 和图 19 所示。

图 18. 在 JDBC 运行方法和首选项环境下运行脚本后的 SQL Results 视图
显示运行脚本的状态和结果的 SQL Results 视图的屏幕截图。
显示运行脚本的状态和结果的 SQL Results 视图的屏幕截图。
图 19. 在 Command Line Processing 运行方法和首选项环境下运行脚本后的 SQL Results 视图
显示运行脚本的状态和结果的 SQL Results 视图的屏幕截图。
显示运行脚本的状态和结果的 SQL Results 视图的屏幕截图。

有关运行 SQL 语句的更多信息,请参见 参考资料 部分的 运行 SQL 语句

SQL 和 XQuery 编辑器工具栏按钮

从脚本导入 SQL 语句

您可能想将存储在一个或多个文件中的 SQL 语句添加到您正在开发的脚本中作为其中的一部分。单击编辑器工具栏上的 Import 按钮(编辑器工具栏 Import 按钮的屏幕截图)来导入基于文本文件的 SQL 语句。

复制所选文件中的 SQL 语句,并将其粘贴到编辑器插入点的位置。如果您将语句导入到已包含 SQL 语句的脚本,导入的语句会使用注释行标注,如图 20 所示。一个 Script 注释行标识导入语句的来源文件。

图 20. 导入到现有脚本的 SQL 语句
屏幕截图显示导入编辑器现有脚本的 SQL 语句。
屏幕截图显示导入编辑器现有脚本的 SQL 语句。

有关将 SQL 语句导入脚本的更多信息,请参见 参考资料 部分的 SQL 和 XQuery 编辑器中将 SQL 语句导入脚本

从脚本导出 SQL 语句

在开发脚本时,您可能想要所编写的 SQL 语句能够供您或您的团队成员在其他 SQL 脚本中使用。使用编辑器工具栏上的 Export 按钮(编辑器工具栏 Export 按钮的屏幕截图)导出脚本中的所有 SQL 语句,或者您选择的语句。

将导出的 SQL 语句保存在一个基于文本的文件中,在默认情况下,与 SQL 脚本具有相同的名称,包括 (.sql) 扩展名。

有关从脚本导出 SQL 语句的更多信息,请参见 参考资料 部分的 在 SQL 和 XQuery 编辑器中从脚本导出 SQL 语句

分析并调优查询

Visual Explain 工具提供了一个 SQL 语句图形视图,以便您分析查询,并对其进行调优以获得更好的性能。

单击编辑器工具栏上的 Open Visual Explain 按钮(编辑器工具栏 Open Visual Explain 按钮的屏幕截图。)将其打开。如果您所连数据库的类型不支持 Visual Explain,将出现一条消息告诉您它不适用于您的数据服务器。

有关使用 Visual Explain 的更多信息,请参见 参考资料 部分的 对 SQL 语句使用 Visual Explain

您还可以使用 InfoSphere Optim Query Tuner 分析并调优查询的性能。

单击 Start Tuning 按钮(编辑器工具栏上的 Start Tustart按钮)启动 InfoSphere Optim Query Tuner。如果使用的产品中没有包含查询优化功能,那么您将看不到 Start Tuning 按钮。

有关查询调优的信息,请参见 参考资料 部分的 调优单个 SQL 语句

创建和管理作业

Job Manager 是 IBM Data Studio 中的一个工具,用于创建和管理您为数据库创建的作业时间表。

单击编辑器工具栏上的 Job Manager 按钮(编辑器工具栏 Job Manager 按钮的屏幕截图。)启动 Job Manager Editor。

SQL and XQuery Editor 帮助将特定的信息传递给 Job Manager,比如 SQL 脚本中的语句、语句终止符、数据库连接信息和执行类型。此信息由 Job Manager Editor 用于安排作业。

有关使用 Job Manager 的信息,请参见 参考资料 部分的 创建和管理作业


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=619878
ArticleTitle=使用 SQL 和 XQuery 编辑器更有效地创建脚本
publish-date=02062012