470 likes | 798 Views
培训教程. INFORMIX. Informix 产品结构 ESQL/C 开发数据库应用程序 Informix 数据库的管理. Informix 的 历史. 历史 公司前身是 Relational Database System,Inc。 1980 Relational Database System,Inc 成立 1981 第一个产品 C-ISAM 1982 发行 pre-SQL 套件: Informer query language, Perform form manager, Ace report wirter
E N D
培训教程 INFORMIX • Informix 产品结构 • ESQL/C开发数据库应用程序 • Informix 数据库的管理
Informix 的历史 • 历史 • 公司前身是Relational Database System,Inc。 • 1980 Relational Database System,Inc成立 • 1981 第一个产品C-ISAM • 1982 发行pre-SQL套件:Informer query language, Perform form manager, Ace report wirter • 1983 Infomrix 诞生(Inform[er]和UNIX的组合) • 1986 Informix-4GL • 1986 发行Informix-Turbo • 1988 公司更名Informix Software,Inc • 1988 Infomrix-4GL/RDS、Informix-4GL/ID及Informix-4GL p-Code版推出 • 1988 发行WingZ • 1990 由Informix-Online取代Informix-Turbo • 1993 发行Informix-OnLine Dynamic Server • 1994 发行Informix-NewEra • 1995 新版Informix-NewEra • 1996 与Illustra合并 • 1999 发行Infromix for Linux • 1999 IDS2000
Informix产品结构 • 数据库服务器及各种选件 • 决算支持工具 • 应用开发工具 • 网关产品 • 连接产品 • WEB Solutions
数据库服务器及各种选件 Informix动态服务器 ( informix Dynamic Server) 通用数据选件 (Informix Dynamic Server .2000) DataBlade模块 (DataBlade Modules) 高级决策支持选件 (Advanced Decision Support Option) 宽展的并行处理选件 (Extended Parallel Option) 支持联机分析应用的选件(MetaCube ROLAP Option ) 与Web应用相集成的选件(Web Intergration Option ) 动态服务器工作组版 (Informix Dynamic Server,Workgroup Edition)
数据库的使用和应用程序的开发 • SQL ( Structed Query Language ) 结构化查询语言 • ESQL/C( Embedded SQL/C ) 嵌入到C中的SQL
局域网 Server HP-UX Client SCO 5.0.4 Informix Dynamic Server 输入:交易数据 输出:交易结果 Client/Server模型 营业网点 中心机房 TCP/IP ...
数据库结构简介 表 Informix DataBase Server 库 db3 column row ...... 字段1 字段2 字段3 字段4 database1 database2 记录1 23 …... M TEST 记录2 记录3 记录4 记录5 记录6 …...
Informix 的配置 ( HP-UX ) • 建立informix用户,组,工作目录,并安装online • 建立用户(informix 组),工作目录 • 设置用户环境变量 • 分配磁盘空间 • 创建并修改onconfig文件 • 修改通讯配置文件sqlhosts • 启动online并初始化磁盘空间
Informix 的配置 ( HP-UX ) 设置用户环境变量 • INFORMIXDIR • ONCONFIG • INFORMIXSERVER • PATH
Informix 的配置 ( HP-UX ) 分配磁盘空间 • “cooked”文件系统 • “raw” 文件系统
Informix 的配置 ( HP-UX ) 创建并修改onconfig文件 ROOTNAME 指定root dbspace 的名字 ROOTPATH 指定root dbspace 的初始chunk的全路径 …... SERVERNUM 在共享内存中的相对位置 DBSERVERNAME 指定该online服务的名称 …... NETTYPE 指定online的连接类型 …...
Informix 的配置 ( HP-UX ) • 修改通讯配置文件 $INFORMIXDIR/etc/sqlhosts 文件 dbservername nettype hostsname servicename server1 onsoctcp nantian online1 server2 onipcshm bniec online2 /etc/services 文件 servicename prot#protocol aliases online1 3456/tcp onl_1 online2 3458/tcp onl_2 /etc/hosts 文件 IP hostsname aliases 10.10.30.141 bniec BNC 10.10.50.68 nantian NT
Informix 的配置 ( HP-UX ) • 启动online并初始化磁盘空间 oninit -I 执行共享内存初始化和磁盘初始化,成功后置为online - 联机方式 !! 注意:该操作会破坏online 磁盘空间中已经存在的数据,因此只在 informix第一次安装或由于其他原因需要重新初始化时才进行
SQL 数据库 用户 结构化查询语言: SQL • SQL(Structure Query Language)语言是数据库的核心语言 • SQL是一个标准的数据库语言,是面向集合的描述性非过程化语言 • 功能强,效率高,简单易学易维护 • SQL语言的四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL 1 数据查询语言DQL SELECT <字段名表> FROM <表或视图名> WHERE <查询条件> 2 数据操纵语言 DML主要的三种形式: 1) 插入:INSERT 2) 更新:UPDATE 3) 删除:DELETE
3 数据定义语言DDL 用来创建数据库中的各种对象-----表、视图、索引、同义词、聚簇等: CREATE TABLE/VIEW/INDEX/SYN/CLUSTER | | | | | 表 视图 索引 同义词 簇 4 数据控制语言DCL 用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如: 1) GRANT:授权。 2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。 回滚---ROLLBACK 回滚命令使数据库状态回到上次最后提交的状态。其格式为: SQL>ROLLBACK; 3) COMMIT [WORK]:提交。 在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,其他人只有在最后提交完成后才可以看到。 事务:它确保多个SQL语句被当作单个工作单元来处理。一个事务是执行的一系列动作的组合。如果这些动作中的任何一个不能执行,那么所其他的动作也不能执行。一个事务通常具有开头和结尾。数据库服务器保证在事务处理的范围内所进行的动作完全提交给磁盘;如果这不能实现,那么数据库恢复为事务开始前的状态。
Informix 的 sql 工具isql 菜单方式的informix数据库访问和管理工具
SQL在事务处理中的缺陷: (1)它是非过程性语言,大多数语句都是独立执行, 与上下文无关, (2)绝大部分应用都是一个完整的过程,SQL难以完全实现这些功能 • 解决方法: (1)扩充SQL,在SQL中引入过程性结构 (2)把SQL嵌入到高级语言中,以便一起完成一个完整的应用
ESQL/C 开发数据库应用程序 • Informix-ESQL/C Informix-ESQL/C 是嵌入式SQL(EMBEDDED SQL)的简称。它是一个应用程序开发工具。它给C程序员提供了一种访问 Informix 数据库的接口。使用库、头文件及预处理器开发者可以把SQL 语句直接地嵌入C程序。它能使C 程序员创建定制应用程序与 Informix 数据库连接。用户通过 Informix-ESQL/C 的程序扩展库可以引入所有SQL数据类型、解释状态信息。使用 Informix 子进程,可获得诸如高层数据库存取、数据操作命令以及SQL的优化查询工具等高效率的数据库服务。 • 一个ESQL/C实例 编写.ec代码 esql预处理 cc 编译 demo.ec demo.c demo.o 可执行文件 cc 链接 demo
编写ESQL/C 程序应遵循以下规则: • 可以用两种方法指明SQL语句: a. 在SQL语句之前用美元符号 $ 标识。 b. 在SQL语句之前用ANSI 标准的 EXEC SQL 关键字来标识。两种方式可以混用,但从维护方面考虑,通常只使用其中一种方式 • 每条SQL语句的最后以分号结束 • SQL语句可以加在程序的任何地方 • SQL语句中可以有变量,变量可以出现在交互式SQL语句中常数可以出现的任何位置。这种变量称为宿主变量
ESQL/C 程序处理流程 定义变量 SQL语句 错误处理 结束
ESQL/C 实 例 /* demo.ec */ #include < stdio.h> #include …… $ include …... int main( int agrc, char * * argv ) { $ char name_t [20]; $ DATABASE demo; $ SELECT name INTO $name_t FROM demo_tbl WHERE cust_name = “test”; …/* 错误处理 */ $ CLOSE DATABASE printf(“The name is %s\n”,name_t); return( 0 ); } /* demo.ec */ #include < stdio.h> #include …… EXEC SQL include …... main( int agrc, char * * argv ) { EXEC SQL char name_t [20]; EXEC SQL DATABASE demo; EXEC SQL SELECT name INTO :name_t FROM demo_tbl WHERE cust_name = “test”; …/* 错误处理 */ EXEC SQL CLOSE DATABASE printf(“The name is %s\n”,name_t); return( 0 ); }
Informix 数据库的管理 • 启动、关闭数据库 • online数据库的状态方式 • 用onmonitor和onstat 监控数据库 • 数据迁移、系统备份
启动、关闭数据库 启动数据库: oninit 数据库正常启动后重新回到提示符下 关闭数据库: onmode -k onmode -ky 数据库正常关闭后重新回到提示符下
Online 的操作方式 • Off-line 脱机方式 • quiescent 静止方式 • on-line 联机方式 • shut-down 关闭方式 • recovery 恢复方式 • read-only 只读方式(在只读服务器上)
Online 的状态转换 oninit 脱机 联机 onmode -k onmode -s onmode -u oninit -s onmode -m onmode -k 静止
监控 Online • 监控程序 onmonitor • 菜单方式的数据库监控工具,无命令参数 • 命令行 onstat • 依靠命令行中提供的参数查看指定的数据库状态
监控 Online • Onstat • >onstat - • >Onstat -c • -d • -g [ sql [ ses_id ] ] • -l • -m • -p • -t • -x • oncheck
数据迁移、系统备份/恢复 • 数据迁移的方法比较 • tbload dbimport unload/load dbload • 性能 快 一般 一般 慢 • 数据来源 tbunload dbexport 指定格式/unload 指定格式 • 数据粒度 表,数据库 数据库 部分或整个表 部分或整个表 • 数据位置 磁盘或磁带 磁盘或磁带 磁盘 磁盘 • 文件类型 二进制 ASCII(&NLS) ASCII(&NLS) ASCII(&NLS) • 日志状态 必须关闭 可选 可选 可选
数据迁移、系统备份/恢复 • 数据库备份 • ontape -s 归档整个系统 • ontape -a 备份逻辑日志文件 • ontape -c 启动连续逻辑日志备份 • 数据库恢复 • ontape -r 从一个文件中恢复数据
附 件 • Informix产品结构 • SQL 基本语法
数据库服务器及各种选件 Informix动态服务器 ( informix Dynamic Server) 通用数据选件 (Informix Dynamic Server .2000) DataBlade模块 (DataBlade Modules) 高级决策支持选件 (Advanced Decision Support Option) 宽展的并行处理选件 (Extended Parallel Option) 支持联机分析应用的选件(MetaCube ROLAP Option ) 与Web应用相集成的选件(Web Intergration Option ) 动态服务器工作组版 (Informix Dynamic Server,Workgroup Edition)
数据库服务器及各种选件 • Informix动态服务器 • 通用数据选件 • DataBlade模块 • 高级决策支持选件 • 宽展的并行处理选件 • 支持联机分析应用的选件 • 与Web应用相集成的选件 • 动态服务器工作组版 Informix动态服务器 Informix Dynamic Server Informix数据库技术产品的核心,是它的动态服务器(IDS)。Informix动态服务器是一种强有力的多线索数据库服务器,具有超群的可伸缩性、易管理性和高效运行的能力。Informix动态服务器的基础,是Informix的领先于业界的动态可伸缩体系结构(Dynamic Scalable Architecture,简称DSA)。这是一种适用于在整个企业范围内提供高度并行处理能力的体系结构,不仅适用于桌面系统和部门级系统,而且也适用于数据中心的各类应用。 动态服务器的高效运行特性,使企业在较短的时间内处理更多的 数据,因此能快速地得到关键性业务问题的答案。 动态服务器的可伸缩性,使客户很容易根据不同要求扩展和剪裁自己的数据库,同时又能满足性能要求并使企业在IT方面已作出的投资得到保护。
动态服务器的可扩展性,使数据库能够管理不断出现的新的信息类型和新的业务逻辑。因此,客户可以灵活地按照自己的业务要求调整自己的数据库,以适应市场的动态变化并对客户的多种要求主动地和及时地作出回应。动态服务器的可扩展性,使数据库能够管理不断出现的新的信息类型和新的业务逻辑。因此,客户可以灵活地按照自己的业务要求调整自己的数据库,以适应市场的动态变化并对客户的多种要求主动地和及时地作出回应。 Informix动态服务器既适用于UNIX平台,亦适用于Windows NT平台。它提供超群的事务处理能力,能够最大限度地利用任何计算环境的硬件能力,包括单处理机平台的计算能力和多处理机平台的计算能力。另外,Informix Dynamic Server还能对决策支持类型的应用提供最佳的支持,因为它的并行数据库查询技术能够极其快速地处理十分复杂的数据库查询。 Informix Dynamic Server能够提供开发现代企业关键业务应用所需要的全部功能及可靠性。它有一套完备的软件包,其功能涵盖了确保系统高可用性和数据完整性而必须的各个方面,包括系统管理、企业数据复制以及可视化地性能监督等等。 Informix Dynamic Server不仅具有明显的性能优势而且具有与业界众多一流合作者的产品和技术很容易集成的能力,使集成具有高效性、灵活性和高可靠性。在此基础上,通过追加能够扩展和强化服务器核心功能的一批集成化的选件,Informix Dynamic Server带给用户的,不仅仅是快速适应市场风云变化的能力,而且会使他们长期以来在IT方面的投资得到保护。 Informix Dynamic Server使客户能够以最短的时间、最低的投资实现最适合业务要求的企业应用、分布式解决方案、高效OLTP系统以及可伸缩的数据仓库应用等等。
Dynamic Scalable Architecture(DSA) 技术下的产品 • Informix-Online Extended Parallel Server(XPS) 基于松耦合或空共享计算机体系结构,包括对称多处理器(SMP)群集和大规模并行处理器。 • Informix-Online Dynamic Server 用于UNIX和Windows Nt 的数据库服务器。支持大型分布式数据库、存储例程、触发器、和相对完整性。具有高效、快响应等特点。Informix-Online 比 SE 具有更强的管理能力。通常可运行于 “raw” 文件系统。 • Informix-Online Workgroup Server 运用于Windows NT 平台下的数据库服务器 早期产品 • Informix-SE 一个易于使用的数据库服务器。它在低管理需求的情况下提供了良好的性能和数据一致性。最适合于中小规模的数据库并能运行于“cooded” 文件系统。 • C-ISAM 一个C子程序库和函数库。它使用户能创建并访问索引顺序文件( a.k.a.ISAM, 或Indexed Sequential Access Method )。这是Informix 的第一个商业化产品。
决策支持工具 先进而成熟的技术框架 -- Informix Decision Frontier Solution Suite 这是一个强有力的和一体化的技术框架,是特意为能够快速开发与布署支持关键性业务的决策支持应用而设计的。具有丰富多维数据分析能力的企业级数据库体系结构与包括数据抽取、变换、集成和维护等在内的一整套措施有机地结合了起来。IT机构可以借助于Informix Decision Frontier这个技术框架,快速地为各种决策支持问题找到有效的解决方案,既可以针对最小规模的、散在的数据集市环境或成批的数据集市环境,也可针对更大的应用环境直到企业数据仓库这一级规模的应用环境。 在Informix Dynamic Server、MetaCube ROLAP选件和Informix Formation的支持和配合下,Informix Decision Frontier将会为设计开发人员提供一个独有的和灵活的决策支持环境。这个环境具有以下技术特征: • 为提交各种不同决策支持解决方案建立一个统一和兼容的平台; • 提供集中的元数据管理功能; • 实现建立和布署决策支持应用时所需的关键性功能 棗 数据的抽取、变换、清除和加载,增强的数据存储以及完备的数据分析的集成; • 为确保系统布置时有最大程度的灵活性,这个决策支持环境既可在UNIX系统上运行又能在Windows NT系统上运行; • 这个决策支持环境充分地利用了Informix Dynamic Server和MetaCube ROLAP选件的技术优势和功能优势,因而具有最大的伸缩性和灵活性,是到目前为止最有效的一种决策支持环境。
应用开发工具 • Informix Data Director 产品族 Data Director for Visual Basic 一个强有力的、模型驱动的数据访问和数据管理平台,使用Visual Basic的开发人员借助于这个平台很容易建立可扩展的、数据库能识别的表格(form)。 Data Director for Web 一个健全的和可视化的直观开发环境。借助于这个环境,开发人员能够快速地设计出应用原型,能够很便捷地建立、管理和布署各种动态Web应用,并使这类应用针对Informix Dynamic Server的结构与功能而达到最佳。Data Director for Web为项目开发人员提供了很完善的项目管理和内容管理功能,使整个项目组(无论是本地还是远程)能同时在一个或多个开发项目上协调彼此的工作。Data Director提供了一种很容易使用的界面用于快速应用开发。经由这个界面,应用开发人员在对其Web应用作剪裁和优化处理时,可以灵活地使用一种很健全的程序设计界面和wizard技术。 • Informix Dynamic 4GL Informix 4GL产品系列的最新版,能够为在各种GUI环境(包括UNIX, Windows和Windows NT)中重新编译和推广已有的Informix 4GL应用,提供一种直接、有效和现代的解决方案。开发人员只须按几下按钮,就可将已有的、基于字符终端的Informix 4GL程序变换为能够在具有GUI界面的客户/服务器系统中运行的程序。企业在充分利用在Informix 4GL应用上投资的同时,能够适应当前对高性能的、基于GUI环境的各种应用的市场需求。 • Informix 4GL产品系列 这组产品由Informix Dynamic 4GL、Informix 4GL Rapid Development System、Informix 4GL Interactive Debugger以及Informix 4GL Compiled所组成。 • Informix SQL Informix SQL是一组完整的数据库应用开发工具,包括:模式编辑器、菜单生成器、SQL编辑器、表格(form)生成器和报告生成器。
网关产品 1. Informix Enterprise Gateway Manager Informix拥有一套完整的、基于各种标准的网关产品,Enterprise Gateway Manager即其中之一员。这个网关产品性能很好,它使Informix应用的使用者和开发者能够透明地访问来自Oracle数据库和Sybase数据库的数据。 2. Informix Enterprise Gateway for EDA/SQL 该网关产品允许任何在UNIX和Microsoft Windows平台上运行的工具和应用能够访问企业内任何地方的数据。既可以经SQL访问数据,也可以经远程调用访问数据,数据可以存储在35种不同的硬件平台和操作系统之上,既可以是关系数据亦可以是非关系数据,可访问的不同数据源多达60余种。 3. Informix Enterprise Gateway with DRDA 该网关软件用于将IBM关系数据库(例如DB2,DB2/400和DB2/VM)与Informix应用集成在一起而无须大型主机软件的参与。
WEB solutions • Informix i.Reach Informix i.Reach是为在企业网上管理、发送和维护大宗文档而设计的。它的极容易使用的Web浏览器界面,使企业中的任何人都能够方便地向Web站点上发送文档,并在必要时对文档作修改更新。无论是部门级还是整个企业级都可使用这个工具管理自己的Web站点。使用Informix i.Reach能够让文档的拥有者使用自己熟悉的工具(如微软的Word和Excel等)去发布、编辑和维护文档;无须掌握HTML、HTTP,甚至连Web站点在什么地方也不知道的情况下,也能向Web站点上发布文档资料;既允许文档集中存放并在整个站点上有统一的风格,也允许文档的作者在一种安全的和彼此协同的环境中远程的维护自己的文档资料。 • Informix i.Sell Informix i.Sell是Informix 的集成化、端到端电子商务(e-commerce)解决方案,包括在当今动态、分布式、Web支持的经济中获得成功所需的全部产品与服务。i.Sell是首套真正全面的,具有稳定价格的电子商务解决方案。 Informix i.Sell解决方案为电子商务提供了先进的体系结构,从最低层起,提供了可伸缩性、可扩展性、容错性及有目标的信息收集能力,并包括了站点开发、个性化、销售及广告管理等高级功能。 Informix i.Sell 由以下部分组成 i.Sell Personalizer 基于规则的内容定位和用户管理系统 i.Sell Merchandiser 在线的前端销售环境 Sell Application Server 100%的纯Java应用服务器
SQL 语法 . 创建数据库( CREATE DATABASE ) CREATE DATABASE database_name [ WITH LOG IN "pathname" ] $create database test_db; . 选择数据库( DATABASE ) DATABASE database_name [ EXECLUSIVE ] $database test_db; . 删除数据库( DROP DATABASE ) DROP DATABASE database_name $drop database test_db; . 关闭数据库( CLOSE DATABASE ) CLOSE DATABASE $close database;
. 创建表 (CREATE TABLE ) CREATE [TEMP] TABLE table_name ( column_name datatype [ NOT NULL ],...) [IN "pathname"] $create table cust_tbl ( cust_no CHAR(15) NOT NULL, acct_no CHAR(21) NOT NULL, cust_name CHAR(40) , cust_age INT , cust_flag CHAR(1) CHECK( cust_flag IN ('0','1')), address CHAR(80) , balance FLOAT DEFAULT 0.0, cust_num INT NOT NULL );
. 改变表名( RENAME TABLE ) RENAME TABLE oldname TO newname $ rename table cust_tbl to cust_table; . 改变字段名( RENAME COLUMN ) RENAME COLUMN table.oldcolumn TO newcolumn $rename column cust_tbl.cust_no to cust_tbl.acct_no
. 修改表( ALTER TABLE ) ALTER TABLE table_name { ADD (newcol_name newcol_type [BEFORE oldcol_name],...) | DROP ( oldcol_name,...) | MODIFY ( oldcol_name newcol_type [NOT NULL],...)}… $alter table cust_tbl add (cust_num int before cust_flag); $alter table cust_tbl modify ( cust_num char(2) not null ); . 删除表( DROP TABLE ) DROP TABLE table_name $drop table cust_tbl;
. 数据查询语句 SELECT SELECT [ALL|DISTINCT|UNIQUE] selectlist [ INTO val ] FROM table_name [ WHERE condition] [ GROUP BY column_list] [ HAVING condition] [ ORDER BY column_name] [ INTO TEMP table_name] $select cust_no into $demo_no_t from cust_tbl where cust_name = "test"; $select cust_name,cust_age from cust_tbl where cust_flag="F" order by cust_age; $select cust_num,count(*),sum(balance) from cust_tbl group by cust_num having count(*) > 2;
. 插入语句 INSERT INSERT INTO table_name [(columnlist)] VALUES (valuelist) $ insert into cust_tbl (cust_no , acct_no , cust_name, cust_age, cust_flag, address , balance , cust_num ) VALUES ("123456789012345" , "070301300100301000001" , "TEST_ACCT" , 23 , '1', "BeiJing" , 999.99, 0 );
. 更新记录 UPDATE 语句 UPDATE table_name SET { column_name = expr [,...] | {(column_list)|*} = (expr_list) } [ WHERE { condition | CURRENT TO cursor_name }] $update cust_tbl set cust_name = "test_old" where cust_no = "123456789012345"; . 删除记录 DELETE 语句 DELETE FROM table_name [ WHERE { condition | CURRENT OF cursor_name } ] $delete from cust_tbl where cust_no = "123456789012345";
. 建立索引 CREATE INDEX CREATE [ UNIQUE|DISTINCT][CLUSTER] INDEX index_name ON table_name [colum_name[ASC|DESC],...] $create unique index i1_cust_tbl on cust_tbl ( acct_no ); . 更改索引 ALTER INDEX ALTER INDEX index_name TO [NOT] CLUSTER $create cluster index i2_cust_tbl on cust_tbl ( cust_no ); $alter index i2_cust_tbl to not cluster; . 删除索引 DROP INDEX DROP INDEX index_name $ drop index i2_cust_tbl;
. 事务处理 BEGIN WORK, COMMIT WORK, ROLLBACK WORK BEGIN WORK: 开始一个事务。当需要进行一系列操作来完成一项功能或任务时,用该语句标识事务的开始。 COMMIT WORK:提交一个事务。完成操作并得到满意的结果时,用此语句结束事务,并把事务中对数据库的修改真正写入数据库中 ROLLBACK WORK:回滚一个事务。操作失败、对运行结果不满意,用此语句结束该事务,并将数据恢复到执行BEGIN WORK 时的状态。 ...... $begin work; $ select ... ...... $ update ... ...... if(flag_correct) $ commit work; else $ rollback work; ......