结构化查询语言

结构化查询语言 (SQL) 是一种标准化语言,用于定义和处理关系数据库中的数据。 根据数据的关系模型,将数据库视为一组表,关系由表中的值表示,并通过指定可从一个或多个基本表派生的结果表来检索数据。

SQL 语句由数据库管理器执行。 数据库管理器的功能之一是将结果表的规范转换为优化数据检索的一系列内部操作。 当 SQL 语句为 prepared时,将发生此变换。 此变换也称为 绑定

必须先准备所有可执行 SQL 语句,然后才能执行这些语句。 准备的结果是语句的可执行文件或 操作格式 。 用于准备 SQL 语句的方法及其操作形式的持久性将 静态 SQL 与 动态 SQL 区分开来。

静态 SQL

静态 SQL 语句的源格式嵌入在以主语言 (例如 COBOL , C 或 Java™) 编写的应用程序中。 在执行程序之前准备语句,并且语句的操作形式在执行程序之后仍然存在。

必须先由 SQL 预编译器处理包含静态 SQL 语句的源程序,然后才能对其进行编译。 预编译器将检查 SQL 语句的语法,将它们转换为主语言注释,并生成主语言语句以调用数据库管理器。

SQL 应用程序的准备包括预编译,其静态 SQL 语句的准备以及修改后的源程序的编译。

动态 SQL

包含嵌入式 动态 SQL 语句的程序必须与包含静态 SQL 的程序一样进行预编译,但与静态 SQL 不同,动态 SQL 语句是在运行时构造和准备的。 语句的源格式是由程序使用静态 SQL PREPARE 或 EXECUTE IMMEDIATE 语句传递到数据库管理器的字符或图形字符串。 可以在 DECLARE CURSOR , DESCRIBE 或 EXECUTE 语句中引用使用 PREPARE 语句准备的语句。 语句的操作形式在连接期间持续存在,或者直到最后一个 SQL 程序离开调用堆栈为止。

嵌入在 REXX 应用程序中的 SQL 语句是动态 SQL 语句。 提交到交互式 SQL 工具和调用级接口 (CLI) 的 SQL 语句也是动态 SQL 语句。

扩展动态SQL

扩展动态 SQL 语句既不是完全静态的,也不是完全动态的。 QSQPRCED API 为用户提供扩展的动态 SQL 功能。 与动态 SQL 一样,可以使用此 API 来准备,描述和执行语句。 与动态 SQL 不同,此 API 在程序包中准备的 SQL 语句将持久存储,直到显式删除该程序包或语句为止。 有关详细信息,请参阅 IBM i 信息中心编程 类别中的 数据库和文件应用程序接口 信息。

交互式 SQL (interactive SQL)

交互式 SQL 工具与每个数据库管理器相关联。 本质上,每个交互式 SQL 工具都是一个 SQL 应用程序,它从工作站读取语句,动态准备和执行这些语句,并向用户显示结果。 此类 SQL 语句据说 以交互方式发出。

Db2 for i 的交互式设施包括 IBM® i Access Client Solutions 的运行 SQL 脚本支持、STRSQL 命令和 STRQM 命令。 有关 SQL 的交互式工具的更多信息,请参阅 SQL ProgrammingQuery Manager Use链接至 PDF 书籍。

SQL 调用级别接口和开放式数据库连接

DB2® 调用级接口 (CLI) 是一个应用程序编程接口,其中为应用程序提供了用于处理动态 SQL 语句的函数。 DB2 CLI 允许任何 ILE 语言的用户通过对 Db2 for i提供的服务程序的过程调用直接访问 SQL 函数。 还可以使用 Microsoft 或其他供应商提供的 Open Database Connectivity (ODBC) Software Developer 's Kit 来编译 CLI 程序,从而支持对 ODBC 数据源的访问。 与使用嵌入式 SQL 不同,不需要预编译。 使用此接口开发的应用程序可以在各种数据库上执行,而无需针对每个数据库进行编译。 通过该接口,应用程序在执行时使用过程调用来连接到数据库,发出 SQL 语句以及获取返回的数据和状态信息。

DB2 CLI 界面提供了许多在嵌入式 SQL 中不可用的功能。 例如:

  • CLI 提供了函数调用,这些调用支持以一致方式在 DB2 系列数据库管理系统中查询和检索数据库系统目录信息。 这将减少编写特定于应用程序服务器的目录查询的需求。
  • 从使用 CLI 编写的应用程序调用的存储过程可以将结果集返回到这些程序。

有关所有可用函数及其语法的完整描述,请参阅 SQL 调用级别接口 (ODBC) 一书。

Java DataBase 连接 (JDBC) 和嵌入式 SQL for Java (SQLJ) 程序

Db2 for i 实现了两个基于标准的 Java 编程 API :Java 数据库连接 (JDBC) 和嵌入式 SQL for Java (SQLJ)。 这两者都可用于创建用于访问 DB2的 Java 应用程序和 applet。

JDBC 调用通过 Java 本机方法转换为对 DB2 CLI 的调用。 您可以通过两个 JDBC 驱动程序访问 Db2 for i 数据库: IBM Developer Kit for Java 驱动程序或 IBM Toolbox for Java JDBC 驱动程序。 有关 IBM Toolbox for Java JDBC 驱动程序的特定信息,请参阅 IBM Toolbox for Java

静态 SQL 不能由 JDBC使用。 SQLJ 应用程序使用 JDBC 作为连接到数据库和处理 SQL 错误等任务的基础,但也可以在 SQLJ 源文件中包含嵌入式静态 SQL 语句。 必须先使用 SQLJ 转换程序转换 SQLJ 源文件,然后才能编译生成的 Java 源代码。

有关 JDBC 和 SQLJ 应用程序的更多信息,请参阅 Developer Kit for Java 一书。

OLE DB 和 ADO (ActiveX 数据对象)

IBM i Access for Windows 包括 OLE DB Providers 以及程序员工具包,允许从 Windows 客户端 PC 快速、轻松地开发 DB2 客户端/服务器应用程序。 有关详细信息,请参阅 IBM i Access for Windows 信息中心IBM i 中的 OLE DB 提供程序

.NET

IBM i Access for Windows 包括一个 .NET 提供程序,允许从 Windows 客户端 PC 快速、轻松地开发 DB2 客户端/服务器应用程序。 有关详细信息,请参阅 IBM i Access for Windows .NET 提供程序中的 IBM i Information Center