INFORMIX-ESQL/C介绍

合集下载

Informix SQL 语句详解

Informix SQL 语句详解

Informix SQL 语句详解Informix SQL 语句详解(1)1. 创建数据库:CREATE DATABASE database_name [WITH LOG IN “pathname”]database_name:数据库名称。

“pathname”:事务处理日志文件。

创建一database_name.dbs目录,存取权限由GRANT设定,无日志文件就不能使用。

BEGIN WORK等事务语句(可用START DATABASE 语句来改变)。

可选定当前数据库的日志文件。

如:select dirpath form systables where tabtype = “L”; 例:create databse customerdb with log in “/usr/john/log/customer.log”;2. 选择数据库:DATABASE databse-name [EXCLUSIVE]database_name:数据库名称。

EXCLUSIVE:独占状态。

存取当前目录和DBPATH中指定的目录下的数据库,事务中处理过程中不要使用此语句。

例:dtabase customerdb;3. 关闭当前数据库:CLOSE DATABASEdatabase_name:数据库名称。

此语句之后,只有下列语句合法:CREATE DATABASE;DATABASE;DROP DATABSE;ROLLFORWARD DATABASE;删除数据库前必须使用此语句。

例:close database;4. 删除指定数据库:DROP DATABASE database_namedatabase_name:数据库名称。

用户是DBA或所有表的拥有者;删除所有文件,但不包括数据库目录;不允许删除当前数据库(须先关闭当前数据库);事务中处理过程中不能使用此语句,通过ROLLBACK WORK 也不可将数据库恢复。

例:drop databse customerdb;5. 创建表或临时表:CREATE [TEMP] TABLE table-name (column_name datatype [NOT NULL], …) [IN “pathname”]table-name :表名称。

Informix数据库SQL介绍

Informix数据库SQL介绍

Informix数据库SQL介绍INFORMIX SQL 介绍⼀、简介:1)、INFORMIX主要产品分为三⼤部分:; 数据库服务器(数据库核⼼); 应⽤开发⼯具; ⽹络数据库互联产品2)、数据库服务器有两种,作⽤都是提供数据操作和管理:; SE:完全基UNIX操作系统,主要针对⾮多媒体的较少⽤户数的应⽤; ONLINE:针对⼤量⽤户的联机事务处理和多媒体应⽤环境3)、应⽤开发⼯具是⽤以开发应⽤程序必要的环境和⼯具,主要也有两个系列:; 4GL:INFORMIX传统的基字符界⾯的开发⼯具,该系列的主要产品有五个,他们是I-SQL、4GL RDS、4GL C COMPILER、4GL ID和ESQL/C;; NewEra:INFORMIX最新提供的具有事件驱动能⼒、⾯向对象的基各种图形界⾯的开发⼯具。

4)、INFORMIX的⽹络数据库互联产品:提供给⽤户基多种⼯业标准的应⽤程序接⼝,通过它可以和其它遵守这些⼯业标准的数据库联接。

⼆、I-SQL菜单简介:Form可以执⾏、创建、修改、编译屏幕格式或删除已存在的屏幕格式Run执⾏某⼀已经存在的屏幕格式Modify修改指定的已经存在的屏幕格式Generate 为指定的表创建⼀个缺省的屏幕格式Compile编译⼀个制定的屏幕格式New创建特定的⽤户屏幕格式Drop删除某已经存在的格式⽂件Exit退出Form菜单Report 可以执⾏、建⽴、修改、编译、或删除报表Run执⾏某⼀报表Modify修改指定的报表Generate 为某⼀个表建⽴⼀个缺省的报表New建⽴⼀个⽤户指定的报表Compile编译指定的报表Drop删除⼀个指定的已经存在的报表Exit退出Report菜单Query-Language详见实⽤程序说明:dbaccessUser-menu 可以执⾏、建⽴或修改⽤户建⽴的菜单Run执⾏当前数据库的⽤户菜单Modify允许⽤户建⽴或修改⽤户菜单Exit退出User-menu菜单Database详见实⽤程序说明:dbaccessTable详见实⽤程序说明:dbaccessExit退出实⽤程序isqlrf(或isql)三、常⽤操作:; 创建数据库ISQL==》DATABASE==》CREATE==》输⼊新建数据库名称; 创建表ISQL==》TABLE==》CREATE==》输⼊欲建的表名==》ADD==》输⼊欲建的字段名及类型等==》EXIT==》BUILD-NEW-TABLE; ⽣成缺省表格式ISQL==》FORM==》GENERATE=》选择数据库==》输⼊表格式名称==》选择表==》TABLE-SELECTION-COMPLETE-----》编译成功==》RUN四、使⽤RDSQL(交互式查询语⾔)编写SQL语句⽅法:ISQL==》Query Langavage==》NEW==》RUN; 建⽴数据库CREATE DATABASE数据库名; 建表(格式及可选数据类型)基本格式:CREATE TABLE表名(字段名类型,字段名类型,---字段名类型);详细定义:CREATE TABLE表名(COL1INTEGER NOT NULL,COL2CHAR(2)CHECK ( COL2IN (“??”,“??”),COL3DATE DEFAULT TODAY,COL4SMALLINT UNIQUE,---字段名类型)FRAGMENT BY ROUND ROBIN (BY EXPRESSION)IN DB1,DB2EXTENT SIZE 1000 NEXT SIZE 600WITH NO LOG (LOG;BUFFERED LOG;LOG MODE ANSILOCK MODE ROW(PAGE);例1:CREATE TABLE ORDERS(ORDER_NUM INTEGERUNIQUE CONSTRAINT ORDER_NUM_UQ,ORDER_DATE DATENOT NULL CONSTRAINT ORDER_DA TE_NNDEFAULT TODAY ;例2:CREATE TABLE CUSTOMER (CUSTOMER_NUM SERIAL,FNAME CHAR(20),PRIMARY KEY (CUSTOMER_NUM)CONSTRAINT PK_CNUM);CREATE TABLE ORDERS (ORDER_NUM SERIAL,CUSTOMER_NUM INTEGER,FOREIGN KEY (CUSTOMER_NUM)REFERENCES CUSTOMERCONSTRAINT FK_CNUM);数据类型:字符型(CHAR(20)),V ARCHAR(MINSIZE, MAXSIZE)数值型(六种,DECIMAL(16,2),SMALLINT,INTEGER,SMALLFLOAT,FLOAT,SERIAL ) ⽇期型( DATE,默认格式为:MM/DD/YYYY )**要修改DATE类型的缺省格式, 只要在⽤户主⽬录的.profile⽂件中做如下说明: DBDATE=Y4MD/EXPORT DBDA TE**货币型(MONEY (8,2))其它(如:INTERV AL,DA TETIME等); 建⽴索引(必须建⽴命名索引)CREATE[ UNIQUE ]INDEX索引名ON表名(字段名)CREATE[ UNIQUE ]INDEX索引名ON表名(字段名)DISABLED;SET INDEXES索引名ENABLEDDROP INDEX索引名; 数据库权限CONNECT:访问数据库RESOURCE:允许⽤户建⽴或清除数据库中的表和索引DBA:数据库管理员,所有权限,⼀般建表者即为DBAGRANT权限TO〈PUBLIC | ⽤户名〉REVOKE权限FROM〈PUBLIC | ⽤户名〉; 检索数据库DA TABASE数据库名SELECT * FROM表名SELECT字段名,字段名FROM表名SELECT字段名,字段名+-*/新字段名FROM表名SEKECT A VG(字段) ,MIN(),MAX(),SUM(),COUNT()FROM表名WHERE⼦句 =〈〉!=< <=>>=MATCHES* 0多个? 单个[ ] 单个字符或⼀个范围\ 转义下⼀个字符LIKE %:0--多个 _ 单个\ 转义下⼀个特殊字符ORDER BY(DESC)时间函数: DAY MDY MONTH WEEKDAY YEAR DATE CURRENT其它函数:LENGTH USER CURRENT TODAY从多个表中查找, SELECT嵌套字段名不同可直接写出,若不同表中有相同字段名,则前缀表名SELECT表⼀.字段名FROM表⼀, 表⼆向表中插⼊数据INSERT INTO表名 [ 列1, 列2。

c语言和INFORMIX数据库

c语言和INFORMIX数据库

Linux系统下C语言编程—怎么向INFORMIX数据库插入数据就是先定义一个结构,给结构赋值,然后把结构里的数据放到informix数据库里面是在UNIX系统下面完成的,知道的朋友能不能给我讲讲。

主要是结构里面的东西怎么往表里面写。

在UNIX下面,用ESQL编程,和C也差不多,就是往里插入SQL语句也可以像C一样的定义变量。

用ESQL/C编程概述使用informix-esql/c语句的C程序通常包括下列元素,本章将逐一讲述:head files头文件include files包含文件host variables宿主变量indicator variables指示变量SQL语句在程序中也可以包含动态定义的语句,将在第九章讲述。

本章提供了下列主题的详细说明:1在esql/c程序中使用头文件2对esql/c提供预处理3在C程序中嵌入SQL语句4识别C变量5处理与编译C程序********************在C程序中嵌入SQL语句SQL语句用$符号或EXEC SQL关键字嵌入到C程序中,使用关键字与ANSI标准一致。

esql/c中的大小写敏感性informix-esql/c预处理器对变量名的大小写不敏感。

由PREPARE语句产生的语句id号和由DECLARE语句产生的游标名默认是不敏感的。

如果希望预处理器对游标名和语句id大小写敏感,可以在esql的命令行中加入-cs参数。

*插入注释你可以用双减号作为注释符号在任何的INFORMIX-ESQL/C行中加入注释。

注释持续到一行的结束。

同时也可以在INFORMIX-ESQL/C行中使用标准的C注释。

如:----------------------------------------------------$database stores5; -- stores5 database is open now!printf("\nDatabase opened\n"); /* This isn’t an ESQL/C line*//* so it needs a regular C notation for a comment*/$begin work; /*You can also use a C comment here*/---------------------------------------------------头文件随informix-esql/c提供有几个头文件,均位于$INFORMIXDIR的/incl子目录下,说明如下:sqlca.h包含有存储了错误状态代码的结构。

8.ESQL/C程序中的SQL通讯区

8.ESQL/C程序中的SQL通讯区

第八章在ESQL/C程序中使用SQL通讯区融本章讲述程序中的一个特别区域的组成,该区域称为SQL通讯区或SQLCA。

本章还讲述如何使用它提供的信息。

融执行完一条SQL语句之后,数据库服务器把返回的信息送到程序中的一个称为SQL通讯区或SQLCA的区域中。

返回的信息把SQL 请求执行的状态反馈给用户。

返回信息可以这样分类:●最近执行的SQL语句的完成状态●有关性能的信息●有关可能发生或已经发生的事情的警告SQLCA是一个数据结构,它是用户的数据段的一部分。

当使用esql 来编译用户的源文件时,它会被自动包含进来。

SQLCA在sqlca.h头文件中定义。

融SQLCA是一个全局的预定义好的结构,它用来存放有关SQL语句执行的信息。

当使用esql来编译源文件时,SQLCA自动包含进来。

SQLCA有五个主要的域—long sqlcode 状态指示器char sqlerrm[72] 错误消息参数(表字段或任何其它的对象),特定于错误消息char sqlerrp[8] 目前未用long sqlerrd[6] 有关数据属性和性能的信息struct sqlwarn 数据异常和其它警告这些域随后讨论。

融sqlca结构的sqlcode域是最近执行的SQL语句的状态。

执行SQL 语句完毕,应当检测它的值,如果不是预定值,则采取相应的措施。

它的值可以是下面的值:<0 发生错误=0 执行成功,没有错误=1:99 该值依赖于动态SQL语句中SQL语句的有关执行的设置(参见提高ESQL/C程序的运行效率一章) =100 语句执行正确,但没有找到记录;预定义的SQLNOTFOUND的值是100数据库服务器在下面这些情况下返回值SQLNOTFOUND—●查询一条记录,但未能找到●查询多条记录时,执行fetch操作时超出了多条记录集合的范围●在ANSI-模式的数据库中,执行delete、insert...select、select...intotemp或update操作时,没有记录能满足WHERE子句的条件。

第一章 INFORMIX ESQL

第一章 INFORMIX ESQL

第一章 INFORMIX ESQL/C概述INFORMIX ESQL/C是数据库应用程序开发工具之一,它以它独有的灵活性、易学易用性,在众多数据库应用程序开发产品中占有一席之地。

INFORMIX ESQL/C就是在C语言程序中直接嵌入SQL语句,这样做的目的是使得使用C 语言开发应用程序的开发者能方便的访问数据库,开发出满足各种要求的数据库应用程序。

那么,它与其它INFORMIX开发工具比较有什么特点呢?首先,INFORMIX ESQL/C程序的开发没有一个菜单式的开发界面。

如INFORMIX-4GL程序的开发有一个包含屏幕格式、模块、程序各部分编辑、编译及运行的菜单界面。

而INFORMIX ESQL/C是通过编辑工具如vi等来进行编辑的。

其次,INFORMIX ESQL/C开发需要一个预处理器来进行程序的预编译。

INFORMIX ESQL/C 的编译命令是esq1,它完成预编译、编译、链接、生成可执行文件等工作。

预处理器所做的工作是将ESQL/C的代码转换成C的代码,再调用C的编译器来处理C程序代码。

INFORMIX公司对ESQL/C程序的开发有强劲的支持。

在ESQL/C中不仅可以使用INFORMIX 提供的预编译命令,还可调用INFORMIX提供的库函数和头文件。

1.1 ESQL/C对ANSI标准的扩充ESQL/C V4.0中的SQL语言与ANSI Level Ⅰ的SQL标准完全兼容,与ANSI LEVELⅡ的SQL标准大部分兼容。

INFORMIX-ESQL/C除完全包括标准的SQL语言的语句外,还对其进行了扩充,增加了一些没有的语句,增强了一些已有语句的功能。

下表列出了所有不符合ANSI语法的ESQL/C的语句。

ALTER INDEX DROP VIEWALTER TABLE FLUSHBEGIN WORK FREECLOSE DATABASE GRANTCREATE AUDIT LOCK TABLECREATE DATABASE PUTCREATE INDEX RECOVER TABLECREATE SYNONYM RENAME COLUMNCREATE TABLE RENAME TABLECREATE VIEW REVOKEDATABASE ROLLFORWARD DATABASEDROP AUDIT SET EXPLAINDROP DATABASE SETLOCK MODEDROP INDEX START DATABASEDROP SYNONYM UNLOCK TABLEDROP TABLE UPDATE STATISTICS表中所列的语句有:建立和修改数据库模式的语句、与INSERT游标有关的语句、与事务及跟踪有关的语句等等。

INFORMIX 数据库资料

INFORMIX 数据库资料

INFORMIX数据库技术目录数据库对象数据块——————————————————4 数据空间—————————————————4 数据库——————————————————4 数据表——————————————————4 索引———————————————————6 视图———————————————————7 查询———————————————————7 存储过程—————————————————8 触发器——————————————————10 组合———————————————————11性能调节语句分析Set Isolation ———————————————11 Set Optimization —————————————11 Set Pdqpriority ——————————————12 Set Lock Mode ——————————————12 Set Log —————————————————12 Lock Table ————————————————12 Set Transaction ——————————————12常用命令Set Explain ———————————————12Unload to ————————————————12 Load ——————————————————12常用实用程序onmonitor ————————————————13 dbaccess ————————————————13 dbschema ————————————————13dbexport、dbimport ———————————13onstat ————————————————13oncheck ————————————————13onmode ————————————————13其他—————————————————13Esql语法头文件的引用———————————————13嵌入式语法————————————————13执行动态语句———————————————14游标使用分析———————————————15ESQL数据类型——————————————19UNIX编译命令——————————————20环境和配置文件sqlhosts ------------------------------- 20系统安全------------------------------------------ 21配置文件(onconfig) ---------------------------------- 211 ADTERR ---------------------------------------- 212 ADTMODE -------------------------------------- 213 ADTPATH ---------------------------------------- 214 ADTSIZE ----------------------------------------- 215 AFF_NPROCS ----------------------------------- 226 AFF_SPROC ------------------------------------- 227 MULTIPROCESSOR ---------------------------- 228 NUMCPUVPS ------------------------------------- 229 NUMAIOVPS ------------------------------------- 2210 SINGLE_CPU_VP --------------------------------- 2311 ALARMPROGRAM ------------------------------- 2312 CONSOLE ---------------------------------------- 2313 MSGPATH ---------------------------------------- 2314 BUFFERS ---------------------------------------- 2315 SHMADD ---------------------------------------- 2416 SHMBASE --------------------------------------- 2417 SHMVIRTSIZE ---------------------------------- 2418 SHMTOTAL -------------------------------------- 2419 STACKSIZE -------------------------------------- 2420 CHUNKS ----------------------------------------- 2521 DBSPACE ---------------------------------------- 2522 DBSPACETEMP --------------------------------- 2523 TBLSPACES -------------------------------------- 2524 ROOTNAME-------------------------------------- 2625 ROOTOFFSET ------------------------------------ 2626 ROOTPATH --------------------------------------- 2627 ROOTSIZE----------------------------------------- 2628 SERVERNUM ------------------------------------- 2629 DBSERVERNAME -------------------------------- 2730 DBSERVERALIASE ------------------------------ 2731 NETTYPE ---------------------------------------- 2732 MIRROR ----------------------------------------- 2733 MIRRORPATH ----------------------------------- 2834 MIRROROFFSET -------------------------------- 2835 LOGFILES -------------------------------------- 2836 LOGBUFF ---------------------------------------- 2837 LOGSIZE ----------------------------------------- 2938 LOGMAX ---------------------------------------- 2939 DUMPDIR --------------------------------------- 2940 DUMPCNT -------------------------------------- 2941 DUMPCORE ------------------------------------- 2942 DUMPGCORE ------------------------------------ 2943 DUMPSHMEM ----------------------------------- 3044 TAPEDEV ---------------------------------------- 3045 TAPEBLK ---------------------------------------- 3046 TAPSIZE ---------------------------------------- 3147 LTAPEDEV -------------------------------------- 3148 LTAPEBLK -------------------------------------- 3149 LTAPESIZE -------------------------------------- 3150 CHPTINTV AL ------------------------------------ 3151 CLEARNERS ------------------------------------- 3152 DATASKIP ---------------------------------------- 3253 NOAGE -------------------------------------------- 3254 FILLFACTOR -------------------------------------- 3255 OPTCOMPIND ------------------------------------ 3256 RESIDENT ----------------------------------------- 3357 STAGEBLOB --------------------------------------- 3358 TXTIMEOUT -------------------------------------- 3359 USEOSTIME -------------------------------------- 3360 TRANSACTIONS ------------------------------ ----- 3361 LOCKS ------------------------------------------ 3462 DEADLOCK_TIMEOUT ------------------------- 3463 USERTHREADS ---------------------------------- 3464 PHYSDBS ---------------------------------------- 3565 PHYSFILE --------------------------------------- 3566 PHYSBUFF --------------------------------------- 3567 MAX_PDQPRIORITY ---------------------------- 3568 PDQPRIORITY ---------------------------------- 3669 DRAUTO ---------------------------------------- 3670 DRINTERV AL ----------------------------------- 3671 DRLOSTFOUND ----------------------------------- 3672 DRTIMEOUT ------------------------------------- 3773 DS_MAX_QUERIES ------------------------------- 3774 DS_MAX_SCANS --------------------------------- 3775 DS_TOTAL_MEMORY ---------------------------- 3976 LRUS ------------------------------------------- 3977 LRU_MAX_DIRTY ------------------------------- 3978 LRU_MIN_DIRTY --------------------------------- 4079 LTXEHWM --------------------------------------- 4080 LTXHWM ----------------------------------------- 4081 OFF_RECVRY_THREADS --------------------------4182 ON_RECVRY_THREADS ---------------------------- 4183 RA_PAGES ---------------------------------------- 4184 RA_THRESHOLD --------------------------------- 42一数据库对象分析:数据库对象的建立,修改与删除操作一般不应放在一个事务中,它的执行会自动导致提交动作,将破坏事务的完整性。

INFORMIX数据库操作及SQL语法

INFORMIX数据库操作及SQL语法

编号:TN-070101001TIENON数据库培训教程INFORMIX基本操作及SQL语法2007年1月,V 1.00目录1、引言 (5)1.1、读者对象 (5)1.2、内容简介 (5)1.3、课程时间 (5)1.4、课程目标 (5)2、数据库基本概念...........................................................错误!未定义书签。

2.1、从身边的例子了解数据库......................................................... 错误!未定义书签。

2.2、数据库系统概述......................................................................... 错误!未定义书签。

2.2.1、数据库的产生................................................... 错误!未定义书签。

2.2.2、数据库系统组成................................................. 错误!未定义书签。

2.2.3、与数据库相关的软件系统......................................... 错误!未定义书签。

2.2.4、数据库系统特点................................................. 错误!未定义书签。

2.2.5、数据库系统的历史............................................... 错误!未定义书签。

2.2.6、数据库系统的发展趋势........................................... 错误!未定义书签。

2.2.7、数据库的分类................................................... 错误!未定义书签。

informix编程简介

informix编程简介

目录一、概述 (3)二、informix-esql/c宿主变量 (3)2.1 常用informix变量类型 (3)2.2 宿主变量的定义 (3)三、informix-esql/c头文件的处理 (4)四、嵌入式的SQL语句 (4)4.1 对数据库的操作 (4)(1)database (4)(2)close ............................................................................................................. database4(3)create database (4)(4)drop database (4)4.2 对数据库表的操作 (5)(1)create table (5)(2)dorp table (5)(3)rename table (5)(4)alter table (5)(5)select (6)(6)insert (7)(7)update (8)(8)delete (8)五、游标 (9)5.1 Declare (9)5.2 Open (10)5.3 Fetch (10)5.4 Close (10)六、事务处理 (11)6.1 begin work (11)6.2 commit work (11)6.3 rollback work (11)七、控制处理 (11)7.1 解决锁资源冲突, (11)八、监控命令简介 (12)8.1 informix-online的工作状态 (12)8.2 informix-online状态的切换 (12)8.3 常见系统阻塞原因 (12)8.4 监控informix-online的运行状态 (12)i n f o r m i x-o n l i n e编程简介一、概述informix-online是一种功能强大的关系型数据库系统,其esql/c提供了嵌入式的C语言编程接口,informix-online dynamic server 7.22 for unix具有以下特点:(1)采用client/server模式。

11.ESQL/C程序中使用DECIMAL数据类型

11.ESQL/C程序中使用DECIMAL数据类型

第十一章ESQL/C程序中使用DECIMAL数据类型融本章介绍DECIMAL数据类型的概貌,并给出了几个使用该类型的例子。

学完本章,你将能够:●知道把宿主变量定义为C的何种数据类型,来存放SQL数据类型DECIMAL的值。

●理解该数据类型的存储要求。

●使用ESQL/C的库函数把数据转换成DECIMAL类型或从DECIMAL类型转换成别的类型。

DECIMAL值:●依赖于机器●可以多达32为有效数字●可以有小数点,或没有●可以有范围在-128到+126之间的指数象下面这样定义DECIMAL字段:ColumnName DECIMAL[ ( m [ , n ] ) ]这里,m是精度(有效数字的数目),n是有效位数(小数点右边的数字的位数)。

在定义时,省略有效位数,则是浮点DECIMAL类型;声明有效位数,则是定点DECIMAL。

SQL的MONEY类型值以定点DECIMAL类型存储,ESQL/C不区分MONEY类型值和DECIMAL类型值;两者都是DECIMAL。

同样,DATETIME和INTERVAL类型都有一个DECIMAL部分。

融为使用DECIMAL类型,在代码中包含进来头文件decimal.h。

$include decimal;定义在decimal.h文件中的dec_t结构存放这些值:dec_exp 数字的指数,基数是100dec_pos 数字的符号:1 当它大于或等于00 当它小于0-1 当它是空值dec_ndgts 有效数字的数目,基数是100dec_dgts 实际的有效数字,基数是100当操作DECIMAL类型的时候,应当使用ESQL/C库中提供的DECIMAL函数,将在后续页中讨论它们。

任何其它的操作、修改或分析可能导致不可预测的结果。

融在ESQL/C库中有四个函数可以把C的数据类型转换成DECIMAL 值:deccvasc(from,len,to) 把ASCII字符串转换成DECIMAL值。

Informix技术大全

Informix技术大全

数据库实战技术大全Version 1.0Written By HGRhgr胡国荣 2003,2008All Rights ReservedInfomix V1.0第一章INFORMIX介绍 (2)I NFORMIX服务器端主要开发环境 (3)I NFORMIX数据库的客户端程式主要开发环境 (3)I NFORMIX企业级解决方案 (7)第二章INFOMIX-ONLINE 介绍 (7)O N L INE的系统结构 (7)O N L INE的存储结构 (7)O N L INE的存取相关技术 (9)O N L INE空间管理 (9)O N L INE初始化配置 (10)O N L INE模式管理 (12)O N L INE容错机制 (13)O N L INE内部运作机制 (15)第三章常用工具介绍 (15)INFORMIX中ONINIT的用法 (15)INFORMIX中ONSTAT的用法 (16)第四章INFORMIX-SQL实践与技巧 (19)I NFORMIX O NLINE数据库的查询优化策略 (19)一:查询的分类 (20)二:查询的优化策略 (20)I NFORMIX-O NLINE数据库备份与恢复方案与策略 (24)一.使用ontape工具进行数据备份 (24)二.使用dbexport命令进行数据备份 (27)三.使用Onunload命令进行数据备份 (29)四:使用dbschema工具备份数据库的结构 (30)I NFORMIX动态服务器安装配置策略与方案 (30)I NFORMIX数据库的锁技术 (39)如何监视INFOMIRX动态服务器 (42)第一章Informix介绍Informix数据库系统是由美国Informix软件公司(已被IBM公司花10亿美元收购)开发出来的关系型数据库产品。

多年来经过不断地更新及升级,目前已经形成了以数据库系统核心Informix-Online和Informix-SE为基础,以多种数据库软件开发工具相互配合而构成的综合数据库系列产品。

19.在ESQL/C程序中使用BYTE和TEXT数据类型

19.在ESQL/C程序中使用BYTE和TEXT数据类型

第十九章在ESQL/C程序中使用BYTE和TEXT数据类型融本章的目标列在上面。

融可以在嵌入语言中SELECT、INSERT或UPDATE任何类型的BLOB 值(BYTE或TEXT)。

这是通过设置一个定位器或loc_t变量来完成的,loc_t是一种特殊类型的宿主变量。

假定定位变量正确设置,则上面的三种语句允许使用。

融为在ESQL/C程序中使用BLOB变量的定位器,必须包括进两个语句。

第一个语句是:$include locator,它将把locator.h头文件包括进用户的ESQL/C程序。

该语句的另一种形式是#include "locator.h"。

这两种语句形式的区别在于,第一种形式是由ESQL/C预编译器处理,而第二种形式由C的预编译器处理。

虽然它们在功能上是等价的,但推荐使用第一种语句形式,因为它说明的头文件是特定于ESQL/C的。

必须包括进来的第二个语句是定义程序中要使用的任何BLOB定位变量。

定义BLOB定位变量的语法是:$locator varname; ,使用时,用变量名代替varname。

该语句的另一种形式是:$loc_t varname; 。

虽然这两种形式在功能上是等价的,但推荐使用第一种形式,因为它使得变量类型对于阅读程序的人来说含义更清晰。

一旦定义好了变量,就能在程序中使用它们。

融数据类型locator是loc_t结构的同义词,该结构用来处理BYTE和TEXT类型的数据对象。

loc_t结构在向数据库中插入数据时,描述数据对象的来源,而在获取数据时,描述数据对象获取后存放的目的。

loc_t结构不存放数据,它只存放定位数据的来源和目的的信息。

融因为用户进程和数据库进程都要访问loc_t结构,该结构中的域指定为USER、SYSTEM和INTERNAL三者之一。

指定为USER的域应当由用户程序设置,然后由数据库引擎进程来查看。

指定为SYSTEM的域由数据库引擎设置,并由用户程序检查。

INFORMIX-ESQLC编程

INFORMIX-ESQLC编程

1.1 SQL语句嵌入方法任何可以交互式输入的SQL语句,例如数据定义语句、数据检索语句、数据控制语句等,都可以嵌入到C 程序中。

可以使用两种方法指明SQL语句:一种是在SQL语句之前用“$”作为前缀,如:#include <stdio.h>main(){$ database book;$ delete from book where book_num=100;…}另一种是在SQL语句之前使用ANSI标准的EXEC SQL关键字来标识,如:#include <stdio.h>main(){EXEC SQL database book;EXEC SQL delete from book where book_num=100;…}1.2 宿主变量SQL语句中可以有变量,变量可以出现在交互式SQL语句中常量可以出现的任何位置,SQL语句中的这种变量称为宿主变量。

INFORMIX-ESQL/C程序通过宿主变量在C语句和SQL语句中传递数据。

一般情况下,在宿主变量前加“$”符来标识。

如:$ update book set book_price = $fNewPrice;在定义宿主变量时也需要在定义语句前用“$”符来标识,如:$ int iNumber;$ char name[10];$ struct student {int no;char name[10];} stu;另外,宿主变量可以像C语言变量一样用在C语言表达式中,如:$ char dbname[11];gets( dbname, 80 );$ database $dbname;1.3 头文件INFORMIX-ESQL/C提供了许多头文件,其中最常用的是sqlca.h,它用于确定SQL语句的返回值和SQL语句执行后的其他信息,在ESQL/C程序中是必须包含的,包含方法是“$include sqlca”。

另外,如果自定义的头文件中包含SQL语句或宿主变量的定义,也必须用同样的方法进行说明,如:$include filename。

informix的存储结构语法

informix的存储结构语法

Informix数据库用户一般都熟悉的使用SQL语句进行简单的查询和统计,而在Informix-Online的数据库服务器中提供了用结构化查询语言SQL语句和流程控制存储语言SPL创建存储例程,以减少Informix的处理。

存储例程是SQL语句和SPL的集合。

它们存放在数据库中,SQL语句会被分析.优化,在例程的执行中,高速缓存中会有一执行规划,使后续操作的执行速度很快。

而单独的SQL语句只有在执行时才会被优化,并且存储例程可以被不同的开发工具调用(4GL 、ESQL/C、POWERBUILDER.DELPHI),在SELECT语句中也调用过程。

例程调试简单,不必重新编译应有软件包。

在例程创建时Informix查询处理器会分析它,并产生一执行规划,永久存放于SPROCEDURES.SYSPROBODY.和SYSPROPLAN中,其后例程按此规划执行,由于大部分查询处理已经完成,存储例程可以在瞬间执行完毕。

由于存储例程所具有的优越性,它已成为进行Informix数据库核心开发的有力工具,掌握它对Informix的开发人员有积极意义,现将我在实际工作中使用的语法和例子详解于下,疏漏和错误请来信指教。

1.创建和执行例程创建例程语法:CRAETE PROCEDURE [OWNER.]PROCEDURE_NAME (参数 1 参数类型=[DEFAULT], 参数 2 参数类型=[DEFAULT],参数n 参数类型=[DEFAULT])RETURNING 值1类型,值2类型,值n类型;<......>;语句体;END RPOCEDURE例程大小不可超过64K,这包括所有的SQL.SPL.空格.跳格符,例程名最多18个字符,并在数据库中唯一存在,语句间用";"分隔,例程只能在当前数据库中创建,例程创建后是一标准执行模板块,可在不同的应有中对其调用,这对开发不同版本的应用将更为便利。

第五章 SQLCA

第五章 SQLCA

第五章 INFORMIX ESQL/C中SQL语句的异常检测方法5.1 SQLCA在ESQL/C程序中,每执行一条SQL语句,数据库服务器将向程序的一个指定区域返回反馈信息,反馈的信息包括:1.最近执行的SQL语句的完成状态2.运行信息3.警告信息这些信息被存放的区域就是SQL Communication Area,简称为SQICA。

SQLCA属于一种结构类型,在sqlca.h中定义。

只要在ESQL/C程序中用到SQLCA,就必须包含sqlca.h文件。

当用户使用esql对ESQL/C源程序进行编译的时候,系统将自动地包含SQLCA结构。

5.1.1 SQLCA结构说明struct sqlca_s{long sqlcode;char sqlerrm[72];char sqlerrp[8];char sqlerrd[6];struct sqlcaw_s{char sqlwarn0;char sqlwarn1;char sqlwarn2;char sqlwarn3;char sqlwarn4;char sqlwarn5;char sqlwarn6;char sqlwarn7;} sqlwarn};extem struct sqlca_s sqlcaSQLCA各域的含义说明如下:(1)sqlcode表示SQL语句的执行状态:当sqlcode<0时,说明SQL语句执行错误;当sqlcode=0时,说明SQL语句执行成功;当sqlcode为1到99的值时,描述动态SQL语句的类型;当sqlcode=100时,表示SEIECT语句或FETCH语句没有返回行。

在INFORMIX ESQL/C中,SQLCODE是一个全局变量,它的值与sqlca.sqlcode的值相同。

(2)sqlerrm[72]用于描述与错误信息相关的参数,如表名、列名等。

(3)sqlerrp[8]目前还没有使用。

(4)sqlerrd[6]:描述SQL语句运行的信息:sqlerrd[0]:用于动态SQL语句,估计返回的行数;sqlerrd[1]:INSERT语句后的SERIAL值或ISAM(索引顺序访问方法)错误码;sqlerrd[2]:语句实际处理的行数;sqlerrd[3]:用于动态SQL,估计语句执行开销;sqlerrd[4]:SQL语句中出错字符的偏移量;sqlerrd[5]:INSERT行的ROWID。

informix 数据库介绍

informix 数据库介绍

第一章INFORMIX 数据库介绍 (2)第二章INFORMIX数据库的安装及常用命令 (3)2.1informix 安装 (3)2.2 INFORMIX Online 7.X常用命令 (4)2.2.1、oninit命令 (4)2.2.2、onmode命令 (4)2.2.3、finderr命令 (5)2.2.4、dbexport和dbimport命令 (5)2.2.5、ontape命令 (5)2.2.6 onunload和onload命令 (6)第三章SQL.ONLINE (6)3.1 SQL (6)3.2 ONLINE部分 (9)第四章INFORMIX数据库参数调整 (12)第一章informix 数据库介绍以unix开放系统为其主要运行环境的大型数据管理系统分布式c/s体系结构,极高的运行效率全新动态可伸缩体系结构(dynamic scalible achi-tectue)。

产品有三大部分:数据库服务器I-SE I-ONLINE数据库开发工具4GL系列(I-SQL;4GL RDS;4GL C;4GL ID;ESQL/C); NEWERA系列具有事务驱动能力,面向对象的基于各种图形的开发网络数据库互联产品;数据库服务器提供数据操作和管理;开发工具是用户用以开发应用程序的必要的环境和工具。

数据库服务器与数据库应用程序之间构成一种完全彻底的C/S 结构体系。

应用程序接收程序操作指令后以结构化查询语言SQL的形式传到数据库服务器。

数据库服务器接收送来的指令进行编译并检查其操作的合法性,然后返回正确的查询和操作结果。

对于多个数据库服务器,可提供其间的分布式数据查询和分布式数据操作。

C、S可以安装在同一台机器上,此时C通过计算机的内存来与S进行数据操作的请求和返回。

即:互联形式的集中式数据库管理系统。

C、S安装在不同的计算机上。

此时它们之间通过网络来传输数据操作的亲求和返回。

即:C/S的数据库管理系统。

informix数据库手册

informix数据库手册
1.1.3
当指定给online系统一个chunk后,该chunk就会被划分为一些更小的称为页(page)的单位。页是online系统的基本I/O单位,所有存储在online系统中的数据实际都存储在页上。例如,如果你想为一个数据库表存储一行,该行的内容就会存储在一个页中;如果您想从数据库中读取一行,存储该行内容的整个页都会被读取到共享内存的缓冲区中。当某个特定的机器/操作系统确定后,online系统的页大小也就确定了。最常用的页大小为2K,也有的系统使用4K的页。Online系统中页的大小是不可改变的。
1.2.6存储过程
Create [dba] Procedure ProcedureName(ParameterList) [ReturningClause]
[OnExceptionProcess][MainStatementBlock]EndProcedure;
带有dba属性时,存储过程对象便具有dba(DatabaseAmphitryon)(dba_privilege)属性,否则,它为主人特权(owner_privilege)属性。OnExceptionProcess处理意外事件。Return VariableList[With Resume]将结果返回,WithResume标识使存储过程返回后再次跳到返回点执行后面的语句,所以Informix存储过程有返回多行结果的特性,它可以作为数据窗口的数据源,在各种数据库开发工具中,我们可以使用游标来取得它的多行返回结果。
(ColumnNameListWithAscOrDesc) FillFactor percent [In DBSpace|FragmentClause]
当在一个表上某列已建立UniqueConstraint时,便已在该表上建立对应该列的UniqueAscIndex,所以再次在该列上建立Asc索引将失败。我们可以在一个表上建立对应某些列的多个索引,单要求某列的索引顺序只有一种。Cluster指定索引的聚族属性,具有聚族索引属性表的物理存储顺序将重新安排与其索引一致。它将加速表的查询与修改,但对表的插入和删除将需要更大的开销。并且索引的聚族属性对应单位为DBSpace,而非整个表。一个表最多只能有一个聚族索引,但Alter Index IndexName To [Not] Cluster语句可以将聚族属性移到另外一个索引上。

INFORMIX数据库简介

INFORMIX数据库简介

他们存放在共享内存的一个结构中。 他们存放在共享内存的一个结构中。该结构是共享内存字典缓冲池的 部分。随后所有用户都可直接在共享内存中访问该结构, 部分。随后所有用户都可直接在共享内存中访问该结构,得到表的有 关信息,从而节省了时间和内存。 关信息,从而节省了时间和内存。 存储过程池:用于缓冲存储过程。 存储过程池:用于缓冲存储过程。当一个会话第一次需要使用存储过 程时,数据库服务器读取系统目录检索存储过程代码,然后, 程时,数据库服务器读取系统目录检索存储过程代码,然后,将这些 代码转换成可执行的形式,并存放在虚拟部分中, 代码转换成可执行的形式,并存放在虚拟部分中,存储过程一旦缓冲 存放,其检索和执行比存放在磁盘上系统目录表中有效得多。 存放,其检索和执行比存放在磁盘上系统目录表中有效得多。 线索信息池:MT(磁带)池包含线索堆栈,以及一些控制线索使用的 线索信息池:MT(磁带)池包含线索堆栈, 结构。 结构。 排序池:为排序而分配的临时空间组成的排序池。 排序池:为排序而分配的临时空间组成的排序池。 大缓冲池:ONLINE的VP利用大缓冲区来一次性向磁盘写更大的页块 利用大缓冲区来一次性向磁盘写更大的页块。 大缓冲池:ONLINE的VP利用大缓冲区来一次性向磁盘写更大的页块。 全局信息池:不属于会话的一些其它信息存放在全局池中。 全局信息池:不属于会话的一些其它信息存放在全局池中。 3.消息部分 包括一些消息缓冲区, 包括一些消息缓冲区,主要用于本机客户通过共享内存方式与 ONLINE系统进行通讯。客户程序把自己的请求消息放在消息部分,同 ONLINE系统进行通讯。客户程序把自己的请求消息放在消息部分, 系统进行通讯 时从该部分取走ONLINE系统的处理结果。 ONLINE系统的处理结果 时从该部分取走ONLINE系统的处理结果。每个以共享内存方式访问 ONLINE系统的用户 大约需要12K的消息部分。 系统的用户, 12K的消息部分 ONLINE系统的用户,大约需要12K的消息部分。 磁盘: 磁盘: 1.Chunks:是磁盘上的一块连续的物理空间,ONLINE数据最终存放于 1.Chunks:是磁盘上的一块连续的物理空间,ONLINE数据最终存放于 我们可设置chunk的个数和大小。因此,chunk是ONLINE的物理存 chunk的个数和大小 此,我们可设置chunk的个数和大小。因此,chunk是ONLINE的物RMIX 数据库服务器系统体系结构

informix_db2

informix_db2

回页首ESQL/C-DB2 编译器ESQL/C 是一个允许您将SQL 语句直接嵌入到C 程序中的SQL API。

ESQL/C 预处理器esqlc会预先处理*.ec 文件,创建一个用C 函数替换所有嵌入式SQL 语句的*.c 文件。

然后,该预处理器调用C 编译器来编译所生成的C 程序,并将结果对象文件链接到ESQ/L-C 库。

ESQL/C-DB2 也是一个允许您嵌入SQL 语句(包括DB2 特有的语句)的SQL API。

本例中,ESQL/C-DB2 预处理器esqlcdb2将预先处理*.ec 文件,创建一个用C 函数替换所有嵌入式SQL 语句的*.c 文件。

然后,该预处理器调用C 编译器来编译所生成的C 程序,并将结果对象文件链接到ESQL/C-DB2 库。

启用ESQL/C-DB2 功能使用命令的选项启用ESQL/C-DB2 功能。

例如:或者,可以通过将DB2CLI 环境变量设置为1 来启用ESQL/C-DB2。

例如:在UNIX 上,对于Bourne 或Korn Shell,DB2CLI 环境变量的设置为:在UNIX,对于C Shell,DB2CLI 环境变量的设置为:在Windows 上,可以使用Setnet32 来设置DB2CLI。

当在该环境中设置DB2CLI 环境变量时,ESQL/C-DB2 编译器将忽略-db2选项,并将应用程序编译成访问DB2,而非访问IDS。

在启用ESQL/C-DB2 功能时,ESQL/C 预处理器执行数据类型的转换,映射向DB2 传递或从DB2 传递的数据类型。

此外,预处理器还在预编译阶段进行运行时的语法转换,以支持特定于DB2 的语法。

在所转换的*.c 文件中,较高级别的SQLI 函数的名称和范围保持不变,同时这些函数将在内部调用DB2-CLI 函数,如下例所示:回页首ESQL/C-DB2 如何处理IDS 和DB2 之间的不同这一节将描述IDS 与DB2 在函数上存在的不同,以及ESQL/C-DB2 编译器如何处理它们。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第二章INFORMIX-ESQL/C简介
融海咨询
本章介绍INFORMIX-ESQL/C产品和它在Informix提供的应用程序开发工具集中所处的地位。

介绍INFORMIX-ESQL/C的总体概貌,使你了解该产品在应用开发过程中所起的作用。

介绍随INFORMIX-ESQL/C产品所带的示例数据库。

简短地回顾一下特定于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与Informix其它的应用开发工具相比较稍有不同。

与INFORMIX-4GL、INFORMIX-SQL、WINGZ和SMART- WARE不同的是,ESQL/C 提供给开发人员的界面不是菜单驱动的。

ESQL/C同C代码、INFORMIX-S QL’s Ace或Perform一起使用。

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 %cd demo
2.现在,输入下面的命令(输入时,把DbName 替换成你所使用的
stores5数据库名): %esqldemo5 DbName
当用户使用自己的stores5数据库拷
贝时,可以进行任意的修改。

如果用户想刷新数据库拷贝,只要再次运行esqldemo5,将删除现有的数据库拷贝,并按初始的情形下创建一个新的数据库拷贝。

相关文档
最新文档