informix笔记 下载本文

内容发布更新时间 : 2024/6/26 18:19:28星期一 下面是文章的全部内容请认真阅读。

第一章 Informix介绍

Informix提供了为开放系统开发和实现信息管理应用的先进产品。核心产品包括应用开发和应用工具,数据库服务器以及中间件。所有的产品都基于ANSI标准的SQL。

INFORMIX-OnLine:快速容错服务器,可以进行联机事务处理方面的应用; INFORMIX-OnLine是

Informix的高性能、容错的、OLTP数据库服务器。OnLine允许在数据库的字段中存放和使用二进制大对象(BLOBs),从而扩展了数据处理使之可以处理多媒体信息。它还允许分布式数据库应用。

INFORMIX-SE:低维护服务器,适用于中、小规模的应用环境;INFORMIX-SE服务器适用于需

要多用户的数据库服务器的环境,但是高的可用性(availability)和OLTP级别的性能不是关键。它适用的环境是多用户共享数据库,运行中、小规模的应用。INFORMIX-SE基于事实上的工业标准的UNIX的文件访问方法,即Informix C-ISAM。

Informix产品使用双进程体系结构,它把用户的前端应用代码和后端数据库服务器隔离。 应用开发工具或客户端,提供构建和运行应用程序的用户接口。 数据库服务器,进行所有的数据处理工作,包括数据的存储和检索。

工业标准SQL用于传送从客户端应用到Informix服务器的数据请求。

在双进程体系结构中,客户机和服务器可以位于同一台机器上或是通过网络相连接的不同的机器上。当两个进程运行于不同的机器上时,称之为客户机/服务器体系结构。

上图表示Informix产品如何构成双进程体系结构。 客户机/服务器的体系结构有几个优点:

? 性能—隔离前端和后端进程,使得可以为特定的任务来优化软、硬件。

? 灵活性—使用双进程体系结构,前端开发工具可以适用于不同的Informix服务器。这

样做,可以使用户选择最适合于自己的应用环境的服务器。从长远的观点来看,开放

式的体系结构使得来自于不同厂商的前端开发工具和服务器可以协同工作。

? 节省费用—可以选择适合于应用程序规模的硬件,从而达到最优的性能/价格比。 ? 可移植性—应用程序易于移植到不同的机器上。

第二章INFORMIX-ESQL/C简介

INFORMIX-ESQL/C是一个应用开发工具,它使得构建应用程序的C程序员拥有一个访问Informix数据库的接口。

开发人员使用库、头文件和预编译器来直接在C程序中嵌入SQL语句。 INFORMIX-ESQL/C具有众多的组织成库形式的例程来帮助用户— ? 使用所有的SQL数据类型 ? 解释状态消息

? 使用Informix子进程

INFORMIX-ESQL/C有时简称为ESQL/C

在使用ESQL/C之前,必须设置好下面的环境变量:

INFORMIXDIR INFORMIX- ESQL/C所位于的目录 PATH 执行程序的搜索路径

用户可以在系统提示符下或在.profile( B shell )文件或 .login( C shell )文件中设置这些变量。如果是在系统提示符下设置环境变量,则用户每次登录时要重新设置它们。如果是在 .profile或 .login文件中设置,则用户每次登录时,环境变量会自动被设置。 使用Bourne shell时,设置环境变量如下:

INFORMIXDIR=usr/informix/; export INFORMIXDIR PATH=$INFORMIXDIR/bin:$PATH; export PATH

使用C shell时,设置如下:

setenv INFORMIXDIR /usr/informix

setenv PATH ${INFORMIXDIR}/bin:${PATH}

当用户运行INFORMIX-OnLine时,还应当把环境变量SQLEXEC设置为$INFORMIXDIR/lib/sqlturbo,把环境变量TBCONFIG设置为合适的值。

运行INFORMIX-NET、INFORMIX-STAR或INFORMIX-OnLine时,可能还有其它的环境变量需要设置。

ESQL/C预处理器

ESQL/C的一个主要部件就是它的预处理器。预处理器在把C的源代码送给C编译器处理之前,把ESQL/C代码转换成C代码。预处理命令从命令行启动,启动时可以有各种不同的参数来说明源文件、预期的结果文件,等等。ESQL/C预处理器将在其它章节里详细讨论。

在本培训手册中,预处理器的名字为—esql。

ESQL/C带了一个示例数据库stores5,该数据库中存放的是一个虚构的运动器材批发商有关的信息。

当示例数据库被创建时,使用ESQL/C的示例源代码也随之被创建。 在练习使用ESQL/C之前,用户应当建立自己的stores5数据库的拷贝。

1.创建一个子目录,用来存放ESQL/C的例子源文件,输入如下: %mkdir demo í demo

2.现在,输入下面的命令(输入时,把DbName替换成你所使用的stores5数据库名):

%esqldemo5 DbName

确信DbName是唯一的。 当用户使用自己的stores5数据库拷贝时,可以进行任意的

修改。如果用户想刷新数据库拷贝,只要再次运行esqldemo5,

将删除现有的数据库拷贝,并按初始的情形下创建一个新的数据库拷贝。

Informix产品提供了一个示例数据库stores5,用户可以在系统提示符下输入dbaccessdemo5来创建该数据库。 附注

用户可以输入dbaccessdemo5 [name],以其它的名字来创建stores5数据库

系统提供的几种数据类型如下:

存放字母、数字和符号的任意组合。 CHAR

存放五种数值数据类型中的某种数值。 NUMBER

存放由INFORMIX-SQL赋值的连续的整数。 SERIAL

存放日期。 DATE

存放现金数额。 MONEY

DATE-TIME 存放日期和时间。

存放表示一段时间的值。 INTERVAL

存放可变长度的字符数据,仅使用必须的磁盘空VARCHAR

间。

一种二进制大对象(BLOB),实际上它可以存放TEXT

任何种类的文本数据。TEXT字段通常存放备忘录、手稿、商业文档,等等。

一种二进制大对象(BLOB),它以一种无区分的BYTE

字节流形式来存放任意种类的二进制数据,通常是保存的电子表格、程序的装载模块、数字化的声音模板,等等。 附注:

VARCHAR、TEXT和BYTE数据类型仅在使用INFORMIX-OnLine时才有。要获取同数据类型有关的更多的信息,请查阅The Informix Guide to SQL:Reference。

第三章在INFORMIX-ESQL/C程序中嵌入SQL语句

在C程序中嵌入SQL语句时,要记住下面的规则:

? 为预编译器指明SQL语句—在SQL语句之前用美元符号($)或ANSI的标准关键字

EXEC SQL来标明。尽管用户可以在C代码中混用这两种标注方法,但是,为了便于维护,一般不推荐这样做。另外,不要忘记在SQL语句的最后加上分号( ; )。

? SQL语句可以有变量,变量可以出现在交互式SQL语句中常数可以出现的任何位置。

这种在可执行的SQL语句中的变量称为宿主变量(host variable),将在后面讨论它。 ? 可以在能够使用C的可执行语句的任何地方使用可执行的SQL语句。

宿主变量,即是C语言中的普通变量,它们可以出现在交互式SQL语句中常数所在的任何位置上。

当在SQL语句中使用宿主变量时,必须把它们同SQL语句中的名称相区分,这样做使得预编译器能够识别出哪些标识符是宿主变量。

为从嵌入式的SQL语句中区分出宿主变量,给宿主变量加上美元符号($)作前缀。如果用户愿意的话,也可以使用ANSI标准中规定的分号( : )来作前缀。(在本手册中,我们将使用美元符号来作标识。)这里是一些例子: ? UPDATE语句中的SET子句,如—

$update stock set unit_price = $NewPriceLd;

? INSERT语句中的VALUES子句,如—

$insert into stock values( $StockG_t );

? UPDATE、DELETE和SELECT语句中的WHERE子句,例如:

$update stock ...where manu_code = $MfcodeLc; $delete from orders where order_num = $OrdNoLl;

宿主变量是普通的C变量。

既然它们是普通的C变量,必须把它们说明和定义成某种类型,就象任何别的C变量一样。

宿主变量可以定义为这些类型中的任何一种— ? 简单类型—象integer, double, 等等。 ? 结构 ? 数组

象其它的C变量一样,可以在定义宿主变量的时候初始化它们。但是,因为ESQL/C预编译器要在编译SQL语句之前知道宿主变量的存在和类型,所以必须为预编译器标明宿主变量的定义。

可以使用美元符号($)作为定义的前缀来为预编译器标明宿主变量的定义,或者,把定义部分用下面这对语句括起来—

EXEC SQL BEGIN DECLARE SECTION EXEC SQL END DECLARE SECTION