当前位置:首页 » 编程语言 » 嵌入式sqldb2
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

嵌入式sqldb2

发布时间: 2022-12-30 09:01:04

1. sqllite,mysql,db2,sqlservice这些数据库是什么关系

SQLLite
是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界着名的数据库管理系统来讲,它的处理速度比他们都快。

MySql
是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。

DB2
是IBM公司研制的一种关系型数据库系统。DB2主要应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/2、Windows等平台下。 DB2提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的执行能力,具有与平台无关的基本功能和SQL命令。DB2采用了数据分级技术,能够使大型机数据很方便地下载到LAN数据库服务器,使得客户机/服务器用户和基于LAN的应用程序可以访问大型机数据,并使数据库本地化及远程连接透明化。 它以拥有一个非常完备的查询优化器而着称,其外部连接改善了查询性能,并支持多任务并行查询。 DB2具有很好的网络支持能力,每个子系统可以连接十几万个分布式用户,可同时激活上千个活动线程,对大型分布式应用系统尤为适用。

SQL Server
是由Microsoft开发和推广的关系数据库管理系统(DBMS),并于1988年推出了第一个OS/2版本。目前最新版本是2012年3月份推出的SQL SERVER 2012。
1.真正的客户机/服务器体系结构。
2.图形化用户界面,使系统管理和数据库管理更加直观、简单。
3.丰富的编程接口工具,为用户进行程序设计提供了更大的选择余地。
4.SQL Server与Windows NT完全集成,利用了NT的许多功能,如发送和接受消息,管理登录安全性等。SQL Server也可以很好地与Microsoft BackOffice产品集成。
5.具有很好的伸缩性,可跨越从运行Windows 95/98的膝上型电脑到运行Windows 2000的大型多处理器等多种平台使用。
6.对Web技术的支持,使用户能够很容易地将数据库中的数据发布到Web页面上。
7.SQL Server提供数据仓库功能,这个功能只在Oracle和其他更昂贵的DBMS中才有。

上述资料来源于互联网整理得到

2. DB2比较常用与实用sql语句总结

1、查找员工的编号、姓名、部门和出生日期,如果出生日期为空值,显示日期不详,并按部门排序输出,日期格式为yyyy-mm-dd。

复制代码 代码如下:

select emp_no,emp_name,dept,isnull(convert(char(10),birthday,120),'日期不详') birthday from employee order by dept

2、查找与喻自强在同一个单位的员工姓名、性别、部门和职称

复制代码 代码如下:

select emp_no,emp_name,dept,title from employee where emp_name<>'喻自强' and dept in (select dept from employee where emp_name='喻自强')

3、按部门进行汇总,统计每个部门的总工资

复制代码 代码如下:

select dept,sum(salary) from employee group by dept

4、查找商品名称为14寸显示器商品的销售情况,显示该商品的编号、销售数量、单价和金额

复制代码 代码如下:

select a.prod_id,qty,unit_price,unit_price*qty totprice from sale_item a,proct b where a.prod_id=b.prod_id and prod_name=ཊ寸显示器'

5、在销售明细表中按产品编号进行汇总,统计每种产品的销售数量和金额

复制代码 代码如下:

select prod_id,sum(qty) totqty,sum(qty*unit_price) totprice from sale_item group by prod_id

6、使用convert函数按客户编号统计每个客户1996年的订单总金额

复制代码 代码如下:

select cust_id,sum(tot_amt) totprice from sales where convert(char(4),order_date,120)=񟬼' group by cust_id

7、查找有销售记录的客户编号、名称和订单总额

复制代码 代码如下:

select a.cust_id,cust_name,sum(tot_amt) totprice from customer a,sales b where a.cust_id=b.cust_id group by a.cust_id,cust_name

8、查找在1997年中有销售记录的客户编号、名称和订单总额

复制代码 代码如下:

select a.cust_id,cust_name,sum(tot_amt) totprice from customer a,sales b where a.cust_id=b.cust_id and convert(char(4),order_date,120)=񟬽' group by a.cust_id,cust_name

9、查找一次销售最大的销售记录

复制代码 代码如下:

select order_no,cust_id,sale_id,tot_amt from sales where tot_amt= (select max(tot_amt) from sales)

10、查找至少有3次销售的业务员名单和销售日期

复制代码 代码如下:

select emp_name,order_date from employee a,sales b where emp_no=sale_id and a.emp_no in (select sale_id from sales group by sale_id having count(*)>=3) order by emp_name

11、用存在量词查找没有订货记录的客户名称

复制代码 代码如下:

select cust_name from customer a where not exists (select * from sales b where a.cust_id=b.cust_id)

12、使用左外连接查找每个客户的客户编号、名称、订货日期、订单金额订货日期不要显示时间,日期格式为yyyy-mm-dd按客户编号排序,同一客户再按订单降序排序输出

复制代码 代码如下:

select a.cust_id,cust_name,convert(char(10),order_date,120),tot_amt from customer a left outer join sales b on a.cust_id=b.cust_id order by a.cust_id,tot_amt desc

13、查找16M DRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用男、女表示

复制代码 代码如下:

select emp_name 姓名, 性别= case a.sex when 'm' then '男' when 'f' then '女' else '未' end, 销售日期= isnull(convert(char(10),c.order_date,120),'日期不详'), qty 数量, qty*unit_price as 金额 from employee a, sales b, sale_item c,proct d where d.prod_name=ཌM DRAM' and d.prod_id=c.prod_id and a.emp_no=b.sale_id and b.order_no=c.order_no

14、查找每个人的销售记录,要求显示销售员的编号、姓名、性别、产品名称、数量、单价、金额和销售日期

复制代码 代码如下:

select emp_no 编号,emp_name 姓名, 性别= case a.sex when 'm' then '男' when 'f' then '女' else '未' end, prod_name 产品名称,销售日期= isnull(convert(char(10),c.order_date,120),'日期不详'), qty 数量, qty*unit_price as 金额 from employee a left outer join sales b on a.emp_no=b.sale_id , sale_item c,proct d where d.prod_id=c.prod_id and b.order_no=c.order_no

15、查找销售金额最大的客户名称和总货款

复制代码 代码如下:

select cust_name,d.cust_sum from customer a, (select cust_id,cust_sum from (select cust_id, sum(tot_amt) as cust_sum from sales group by cust_id ) b where b.cust_sum = ( select max(cust_sum) from (select cust_id, sum(tot_amt) as cust_sum from sales group by cust_id ) c ) ) d where a.cust_id=d.cust_id

16、查找销售总额少于1000元的销售员编号、姓名和销售额

复制代码 代码如下:

select emp_no,emp_name,d.sale_sum from employee a, (select sale_id,sale_sum from (select sale_id, sum(tot_amt) as sale_sum from sales group by sale_id ) b where b.sale_sum <1000 ) d where a.emp_no=d.sale_id

17、查找至少销售了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额

复制代码 代码如下:

select a.cust_id,cust_name,b.prod_id,prod_name,d.qty,d.qty*d.unit_price from customer a, proct b, sales c, sale_item d where a.cust_id=c.cust_id and d.prod_id=b.prod_id and c.order_no=d.order_no and a.cust_id in ( select cust_id from (select cust_id,count(distinct prod_id) prodid from (select cust_id,prod_id from sales e,sale_item f where e.order_no=f.order_no) g group by cust_id having count(distinct prod_id)>=3) h )

18、查找至少与世界技术开发公司销售相同的客户编号、名称和商品编号、商品名称、数量和金额

复制代码 代码如下:

select a.cust_id,cust_name,d.prod_id,prod_name,qty,qty*unit_price from customer a, proct b, sales c, sale_item d where a.cust_id=c.cust_id and d.prod_id=b.prod_id and c.order_no=d.order_no and not exists (select f.* from customer x ,sales e, sale_item f where cust_name='世界技术开发公司' and x.cust_id=e.cust_id and e.order_no=f.order_no and not exists ( select g.* from sale_item g, sales h where g.prod_id = f.prod_id and g.order_no=h.order_no and h.cust_id=a.cust_id) )

19、查找表中所有姓刘的职工的工号,部门,薪水

复制代码 代码如下:

select emp_no,emp_name,dept,salary from employee where emp_name like '刘%'

20、查找所有定单金额高于2000的所有客户编号

复制代码 代码如下:

select cust_id from sales where tot_amt>2000

21、统计表中员工的薪水在4000-6000之间的人数

复制代码 代码如下:

select count(*)as 人数 from employee where salary beeen 4000 and 6000

22、查询表中的同一部门的职工的平均工资,但只查询"住址"是"上海市"的员工

复制代码 代码如下:

select avg(salary) avg_sal,dept from employee where addr like '上海市%' group by dept

23、将表中住址为"上海市"的员工住址改为"北京市"

复制代码 代码如下:

update employee set addr like '北京市' where addr like '上海市'

24、查找业务部或会计部的女员工的基本信息。.winGWiT.Com

复制代码 代码如下:

select emp_no,emp_name,dept from employee where sex='F'and dept in ('业务','会计')

25、显示每种产品的销售金额总和,并依销售金额由大到小输出。

复制代码 代码如下:

select prod_id ,sum(qty*unit_price) from sale_item group by prod_id order by sum(qty*unit_price) desc

26、选取编号界于'C0001'和'C0004'的客户编号、客户名称、客户地址。

复制代码 代码如下:

select CUST_ID,cust_name,addr from customer where cust_id beeen 'C0001' AND 'C0004'

27、计算出一共销售了几种产品。

复制代码 代码如下:

select count(distinct prod_id) as '共销售产品数' from sale_item

28、将业务部员工的薪水上调3%。

复制代码 代码如下:

update employee set salary=salary*1.03 where dept='业务'

29、由employee表中查找出薪水最低的员工信息。

复制代码 代码如下:

select * from employee where salary= (select min(salary ) from employee )

30、使用join查询客户姓名为"客户丙"所购货物的"客户名称","定单金额","定货日期","电话号码"

复制代码 代码如下:

select a.cust_id,b.tot_amt,b.order_date,a.tel_no from customer a join sales b on a.cust_id=b.cust_id and cust_name like '客户丙'

31、由sales表中查找出订单金额大于"E0013业务员在1996/10/15这天所接每一张订单的金额"的所有订单。

复制代码 代码如下:

select * from sales where tot_amt>all (select tot_amt from sales where sale_id='E0013'and order_date=񟬼/10/15') order by tot_amt

32、计算'P0001'产品的平均销售单价

复制代码 代码如下:

select avg(unit_price) from sale_item where prod_id='P0001'

33、找出公司女员工所接的定单

复制代码 代码如下:

select sale_id,tot_amt from sales where sale_id in (select sale_id from employee where sex='F')

34、找出同一天进入公司服务的员工

复制代码 代码如下:

select a.emp_no,a.emp_name,a.date_hired from employee a join employee b on (a.emp_no!=b.emp_no and a.date_hired=b.date_hired) order by a.date_hired

35、找出目前业绩超过232000元的员工编号和姓名。

复制代码 代码如下:

lishixin/Article/program/DB2/201404/30294

3. 动态SQL的使用

在介绍动态SQL前我们先看看什么是静态SQL

静态SQL

静态 SQL 语句一般用于嵌入式 SQL 应用中,在程序运行前,SQL 语句必须是确定的,例如 SQL 语句中涉及的列名和表名必须是存在的。静态 SQL 语句的编译是在应用程序运行前进行的,编译的结果会存储在数据库内部。而后程序运行时,数据库将直接执行编译好的 SQL 语句,降低运行时的开销。

动态SQL

动态 SQL 语句是在应用程序运行时被编译和执行的,例如,使用 DB2 的交互式工具 CLP 访问数据库时,用户输入的 SQL 语句是不确定的,因此 SQL 语句只能被动态地编译。动态 SQL 的应用较多,常见的 CLI 和 JDBC 应用程序都使用动态 SQL。

动态SQL作用

动态SQL执行方法

使用EXEC(EXECUTE的缩写)命令和使用SP_EXECUTERSQL。

EXEC命令执行

语法

注:EXECUTE 命令有两个用途,一个是用来执行存储过程,另一个是执行动态SQL

不带参数示例

在变量@SQL中保存了一个字符串,该字符串中包含一条查询语句,再用EXEC调用保存在变量中的批处理代码,我们可以这样写SQL:

EXEC ('SELECT * FROM Customers')

结果如下:

与我们直接执行SELECT * FROM Customers一样。

带参数示例

还是上面的示例,我们换一种写法

DECLARE @SQL AS VARCHAR(100);

DECLARE @Column AS VARCHAR(20);

SET @Column = '姓名'

SET @SQL = 'SELECT ' + @Column + ' FROM Customers'

EXEC (@SQL)

结果如下:

SP_EXECUTERSQL执行

语法

注意:SP_EXECUTERSQL是继EXEC后另一种执行动态SQL的方法。使用这个存储过程更加安全和灵活,因为它支持输入和输出参数。注意的是,与EXEC不同的是,SP_EXECUTERSQL只支持使用Unicode字符串作为其输入的批处理代码。

示例

构造了一个对Customers表进行查询的批处理代码,在其查询过滤条件中使用一个输入参数@CusID

DECLARE @SQL AS NVARCHAR(100);

SET @SQL=N'SELECT * FROM Customers

WHERE 客户ID=@CusID;'

EXEC SP_EXECUTESQL

@STMT=@SQL,

@PARMS=N'@CusID AS INT',

@CusID=1;

结果如下:

代码中将输入参数取值指定为1,但即使采用不同的值在运行这段代码,代码字符串仍然保存相同。这样就可以增加重用以前缓存过的执行计划的机会

4. 教你快速掌握DB2数据库创建外键时的选项

免费看《Windows CE 嵌入式系统开发 从基础到实践》

创建外键时的选项

创建测试表

drop table student;drop table class;drop table student_class;Create table student(student_id integer not null student_name varchar( ) CONSTRAINT P_KEY_ primary key (student_id)) in luzl_ k_tb index in luzl_ k_tb ;Create table class(class_id integer not null class_name varchar( ) CONSTRAINT P_KEY_ primary key (class_id)) in luzl_ k_tb index in luzl_ k_tb ;Create table student_class(student_class_id integer student_id integer class_id integer) in luzl_ k_tb index in luzl_ k_tb;alter table student_class add constraint if_class foreign key(class_id) references class(class_id) ON DELETE cascade ON UPDATE RESTRICT;alter table student_class add constraint if_student foreign key(student_id) references student(student_id) ON DELETE cascade ON UPDATE RESTRICT;Insert into student(student_id student_name) values( luzl );Insert into class(class_id class_name) values( db );Insert into student_class(student_class_id student_id class_id) values( );

On Delete 的选项有

Restrict/no action/cascade/set null 其中cascade选项指定的话 如果删除父记录 依赖于他的子记录也会自动删除 相当于级联删除 如果指定no action和cascade都会报错 因为还有子记录所以无法删除该记录 set nul允许删除父记录并且l会将子表中与父表关联的字段设置为null

On Update 只有两个选项 no action/restrict 它们在更新和删除时并没有区别:如果与子表关联不允许删除

lishixin/Article/program/DB2/201311/21928

5. DB2数据库中的序列和触发器

Berkeley DB (DB)是一个高性能的,嵌入数据库编程库,和C语言,C++,Java,Perl,Python,PHP,Tcl以及其他很多语言都有绑定。Berkeley DB可以保存任意类型的键/值对,而且可以为一个键保存多个数据。Berkeley DB可以支持数千的并发线程同时操作数据库,支持最大256TB的数据,广泛用于各种操作系统包括大多数Unix类操作系统和Windows操作系统以及实时操作系统。 2.0版本或以上的Berkeley DB由Sleepycat Software公司开发,并使用基于自由软件许可协议/私有许可协议的双重授权方式提供[1],附有源代码。开发者如果想把Berkeley DB嵌入在私有软件内需要得到Sleepycat公司的许可,若将软件同样遵循GPL发布,则不需许可即可使用。而2.0版本以下的则使用BSD授权,可自由作商业用途。 Berkeley DB最初开发的目的是以新的HASH访问算法来代替旧的hsearch函数和大量的dbm实现(如AT&T的dbm,Berkeley的 ndbm,GNU项目的gdbm),Berkeley DB的第一个发行版在1991年出现,当时还包含了B+树数据访问算法。在1992年,BSD UNIX第4.4发行版中包含了Berkeley DB1.85版。基本上认为这是Berkeley DB的第一个正式版。在1996年中期,Sleepycat软件公司成立,提供对Berkeley DB的商业支持。在这以后,Berkeley DB得到了广泛的应用,成为一款独树一帜的嵌入式数据库系统。2006年Sleepycat公司被Oracle 公司收购,Berkeley DB成为Oracle数据库家族的一员,Sleepycat原有开发者继续在Oracle开发Berkeley DB,Oracle继续原来的授权方式并且加大了对Berkeley DB的开发力度,继续提升了Berkeley DB在软件行业的声誉。Berkeley DB的当前最新发行版本是4.7.25。 值得注意的是DB是嵌入式数据库系统,而不是常见的关系/对象型数据库,对SQL语言不支持,也不提供数据库常见的高级功能,如存储过程,触发器等。 Berkeley DB的体系结构Berkeley DB以拥有比Microsoft SQL Server和Oracle等数据库系统而言更简单的体系结构而着称。例如,它不支持网络访问—程序通过进程内的API访问数据库。 他不支持SQL或者其他的数据库查询语言,不支持表结构和数据列。 访问数据库的程序自主决定数据如何储存在记录里,Berkeley DB不对记录里的数据进行任何包装,每个记录有且只有两部分:键、值,所以在Berkeley DB的背景下通常用key/data pair指代一个记录。记录和它的键都可以达到4G字节的长度。 尽管架构很简单,Berkeley DB却支持很多高级的数据库特性,比如ACID 数据库事务处理,细粒度锁,XA接口,热备份以及同步复制。 Berkeley DB包含有与某些经典Unix数据库编程库兼容的接口,包括:dbm,ndbm和hsearch。Berkeley DB的核心数据结构数据库环境句柄DB_ENV: 每个DB_ENV相当于一个数据库,它包含了数据库全局信息,比如缓冲区大小、以及对事务、日志、锁等子系统的全局配置信息。数据库句柄结构DB:每个DB相当于关系数据库的一个表,其中存储了很多key/data pair。DB句柄代表了一个包含了若干描述数据库表属性的参数,如数据库访问方法类型、逻辑页面大小、数据库名称等;同时,DB结构中包含了大量的数据库处理函数指针,大多数形式为 (*dosomething)(DB *, arg1, arg2, …)。其中最重要的有open,close,put,get等函数。 数据库记录结构DBT:DB中的记录由关键字和数据构成,关键字和数据都用结构DBT表示。实际上完全可以把关键字看成特殊的数据。结构中最重要的两个字段是 void * data和u_int32_t size,分别对应数据本身和数据的长度。 数据库游标结构DBC:游标(cursor)是数据库应用中常见概念,其本质

6. 请教db2下嵌入式sql-c 开发问题

b/g/h三个表的workdate有索引么看另外,1.如果可能最好将所有联表用的字段都进行索引,2.(workdate,agentserialno)可以考虑二维索引,前提是空间足够的话,这样效率提高会非常明显。

7. C语言db2嵌入式SQL编程,编译问题 undefined reference to `sqlastrt'

1、要有类似的定义:
……
EXEC SQL INCLUDE SQLDA; /* or #include <sqlda.h> */
2、编译环境要有db2的权限和sqllib的路径
3、我已经上传了一份相关的文档,预计明后天审核通过就可以看到了
《DB2开发基础》
http://passport..com/?business&aid=6&un=chinacmouse#7

补充一个程序:
#include <time.h>
#include "stdio.h"

EXEC SQL INCLUDE SQLCA;

int main()
{
int i=0;
struct tm *pt;
time_t t1;
t1 = time(NULL);
pt = localtime(&t1);
printf("%4d%02d%02d", pt->tm_year+1900, pt->tm_mon+1, pt->tm_mday);
printf("%02d:%02d:%02d\n",pt->tm_hour,pt->tm_min,pt->tm_sec);

EXEC SQL CONNECT TO db;
i=0;
while (i<3000)
{
int j=0;
while (j<1000)
{
EXEC SQL update cc.fund set cc_code='095' where cc_no='0950031359';
j++;
}
i++;
}
EXEC SQL COMMIT;
t1 = time(NULL);
pt = localtime(&t1);
printf("%4d%02d%02d", pt->tm_year+1900, pt->tm_mon+1, pt->tm_mday);
printf("%02d:%02d:%02d\n",pt->tm_hour,pt->tm_min,pt->tm_sec);
EXEC SQL CONNECT RESET;
return 1;
}

编译脚本
db2 prep testdb.sqc target cplusplus bindfile using testdb.bnd package using testdb
db2 bind testdb.bnd
db2 grant execute on package testdb to public
gcc -I/app/db2inst1/sqllib/include -I./ -c -g testdb.C
gcc -L/app/db2inst1/sqllib/lib -ldb2 -L/usr/lib -lm -o testdb testdb.o

8. 嵌入式SQL的简介

嵌入式SQL(英文: Embedded SQL)是一种将SQL语句直接写入C语言,COBOL,FORTRAN, Ada等编程语言的源代码中的方法。借此方法,可使得应用程序拥有了访问数据以及处理数据的能力。在这一方法中,将SQL文嵌入的目标源码的语言称为宿主语言。
在SQL标准的SQL86(1986年发布)中定义了对于COBOL, FORTRAN, PI/L等语言的嵌入式SQL的规范。在SQL89(1989年发布)规范中,定义了对于C语言的嵌入式SQL的规范。一些大型的数据库厂商发布的数据库产品中,都提供了对于嵌入式SQL的支持。比如Oracle, DB2等。

9. DB2数据库 SQL注意事项

持续记录遇到的一些坑:

1.union表时,两张表如果字段不一致。如:

表1:

名称  类型

苹果  红富士

葡萄  晴王

表2:

名称

香蕉

如果使用:

select 名称,类型 from 表1

union

select 名称,null as 类型 from 表2

将会报错,因为DB2对字段类型有严格要求,必须事先定义好新添加列的类型如:cast(null,varchar(50) as 类型,这样才能成功。

10. DB2的历史

DB2拥有悠久的历史并且被很多人认为是最早使用SQL(同样最早被IBM开发)的数据库产品。
1968:IBM 在 IBM 360 计算机上研制成功了 IMS V1,这是第一个也是最着名的和最为典型的层次型数据库管理系统。至今仍然还有企业在使用呢。
1970:这是数据库历史上划时代的一年,IBM公司的研究员E.F.Codd 发表了业界第一篇关于关系数据库理论的论文A Relational Model of Data for Large Shared Data Banks,首次提出了关系模型的概念。这篇论文是计算机科学史上最重要的论文之一,奠定了Codd博士关系数据库之父的地位。
1973:IBM研究中心启动了 System R 项目,研究多用户与大量数据下关系型数据库的可行性,它为 DB2 的诞生打下了良好基础。由此取得了一大批对数据库技术发展具有关键性作用的成果,该项目于1988年被授予ACM软件系统奖。
1974:IBM研究员Don Chamberlin 和 Ray Boyce 通过 System R 项目的实践,发表了论文SEQUEL:A Structured English Query Language,提出了 SEQUEL 语言,此即 SQL 语言的原型。
1975:IBM研究员Don Chamberlin 和 Morton Astrahan的论文 Implentation of a Structured English Query Language,在 SEQUEL 的基础上 描述了 SQL 语言的第一个实现方案。这也是 System R 项目得出的重大成果之一。
1976:IBM System R 项目组发表了论文A System R: Relational Approach to Database Management,描述了一个关系型数据库的原型。IBM 的研究员Jim Gray 发表了名为Granularity of Locks and Degrees of Consistency in a Shared DataBase的论文,正式定义了数据库事务的概念和数据一致性的机制。
1977:System R 原型在3个客户处进行了安装,这 3 个客户分别是:波音公 司、Pratt & Whitney 公司和 Upjohn 药业。这标志着 System R 从技术上已经是 一个比较成熟的数据库系统,能够支撑重要的商业应用了。
1979:IBM研究员Pat Selinger在她的论文Access Path Selection in a Relational Database Management System中描述了业界第一个关系查询优化器。
1980:IBM发布了 S/38 系统,该系统中集成了一个以 System R 为原型的数据库服务器。为了方便应用程序的移植,它的 API 与 S/3、S/32 的 API 一致。
1981:由于发明了关系型数据库模型,IBM 的研究员E.F.Codd 接受了ACM 图灵奖,这是计算机科学界的最高荣誉。Codd 博士也是继查尔斯.巴赫曼(Charles W. Bachman) 之后,又一位由于在数据库领域做出巨大贡献而获此殊荣的计算机科学家。
1982:IBMPC 的出现标志着 PC 产业开始孕育发展。在以后相当长的一段时间内,在各种品牌的个人电脑上标记着的IBM PC Compatible字样都见证着 IBM 在 这个领域的辉煌。
1982:IBM发布了 SQL/DS for VSE and VM 。这是业界第一个以 SQL 作为接口的商用数据库管理系统。该系统也是基于 System R 原型所设计的。
1983:IBM发布了DATABASE 2(DB2)for MVS(内部代号为Eagle)。
1986:System/38 V7 发布,该系统首次配置了查询优化器,能够对应用程序的存取计划进行优化。
1987:IBM发布带有关系型数据库能力的 OS/2 V1.0扩展版,这是IBM第一次把关系型数据库处理能力扩展到微机系统。这也是 DB2 for OS/2、Unix and Window 的雏形。
1988:IBM发布了SQL/400,为集成了关系型数据库管理系统的AS/400服务器提供了SQL支持。IDUG(国际DB2用户组织)组织成立。
1989:IBM定义了 Common SQL 和 IBM 分布式关系数据库架构(DRDA),并在 IBM 所有的关系数据库管理系统上加以实现。 第一届 IDUG北美大会在美国芝加哥召开。 1992:第一届 IDUG欧洲大会在瑞士日内瓦召开。这标志着 DB2 应用的全球化。
1993:
1.IBM发布了DB2 for OS/2 V1(DB2 for OS/2 可以被简写为DB2/2)和 DB2 forRS/6000V1(DB2 for RS/6000 可以被简写为DB2/6000),这是 DB2 第 一次在Intel 和Unix 平台上出现。
2.Louis V. Gerstner 入主 IBM。
1994:
1.DB2 For MVS V4 通过并行 Sysplex 技术的实现在主机上引入了分布式计算(数据共享)。
2.IBM发布了运行在 RS/6000 SP2 上的 DB2 并行版 V1,DB2 从此有了能够适应大型数据仓库和复杂查询任务的可扩展架构。IBM 将 DB2 Common Server 扩展到 HP-UX 和 Sun Solaris 上。DB2 开始支持其他公司开发的 UNIX 平台。 DB2/400 集成在 OS/400 V3.1中发布,并且引入了并行机制、存储过程和参照完整性等机制。同时,IBM 宣布在 OS/2 和 AIX 平台上的 DB2 产品能够对多媒体数据和面向对象应用程序提供支持。
1995:
1.IBM发布了 DB2 Common Server V2,这是第一个能够在多个平台上运行的对象-关系型数据库(ORDB)产品,并能够对 Web 提供充分支持。DataJoiner for AIX 也诞生在这一年,该产品赋予了 DB2 对异构数据库的支持能力。DB2 在 Windows NT 和 SINIX平台上的第一个版本(DB2 V2)发布。
2.IBM发布了在 AIX 和 MVS 平台上的数据挖掘技术,用于管理大文本、图像、音频、视频和指纹信息的扩展器(Extender)以及可以对数据仓库进行可视化构造和管理的Visual Warehouse。
3.IBM发布了 DB2 WWW Connection V1 for OS/2 and AIX(该产品后来被更名为Net.Data)。该产品可以将数据库中的数据快速发布到 Web。第一届 IDUG 亚太区大会在澳大利亚悉尼召开。这年IBM 并购了 Lotus Development Corp。
1996:
1.IBM发布 DB2 V2.1.2 ,这是第一个真正支持 JAVA 和 JDBC 的数据库产品。
2.DataJoiner 开始支持对非关系型数据库(比如 IMS 和 VSAM)的存取。
3.IBM发布了 Intelligent Miner,该产品可以对基于 DB2 的数据源实施数据挖掘。
4.IBM并购 Tivoli。 IBM 将 DB2 更名为 DB2 Universal Database,这是第一个能够对多媒体和 Web 进行支持的RDBMS。该系统具有很好的伸缩性,可以从桌面系统扩展到大型企业,适应单处理器、 SMP 和 MPP 计算环境,并可以运行在所有主流操作系统和硬件平台上。 DB2 V5 是以前的两个产品的合并:DB2 Common Server V 2.1.2 和 DB2 并行版 1.2。
5.IBM发布了数字图书馆产品,这是一个多媒体资产管理产品,也是 IBM Content Manager 的前身。
6.DB2 Magzine 第一期发布,DB2 有了自己专门的技术刊物。
1997:
1.IBM发布了可以支持 Web 的 DB2 for OS/390 V5,这是当时唯一能够支持64, 000个并发用户和百 TB 级别的数据库产品。
2.IBM发布了DB2 UDB for UNIX、Windows and OS/2,该产品支持 ROLLUP 和 CUBE 函数,对联机分析处理(OLAP)具有重要意义。
3.IDUG 第一次技术论坛在加拿大多伦多召开。
4.IBM发布了用于企业级内容管理的 EDMSuite,该产品包含了用于管理计算机生成报表的 OnDemand 和 管理图像的 ImagePlus VisualInfo。
5.IBM基于 RS/6000 SP 架构的超级计算机深蓝在国际象棋的 6 番棋对抗中战胜了世界棋王卡斯帕罗夫。
1998:
1.IBM发布了 DB2 OLAP Server,这是一个基于 DB2 的完整的 OLAP Solution。这个产品是和 Arbor Software(Hyperion的前身)合作开发的。
2.IBM发布了 DB2 Data Links 技术,该技术可使 DB2 对外部文件进行管理。
3.DB2的 shared-nothing集群技术扩展到 Windows 和 Solaris 平台。
4.IBM发布了 DB2 Spatial Extender,这是与ESRI公司在DataJoiner基础 上联合开发的,该产品赋予了DB2 对地理信息数据的存取能力。
5.IBM发布了 ContentConnect,该产品是 Enterprise Information Portal(EIP)的前身。
6.DB2 对 SCO UnixWare 平台提供支持。
7.DB2 UDB V5.2 增加了对 SQLJ、Java 存储过程和用户自定义函数的支持。
8.IBM发布 DB2 UDB for AS/400,使 AS/400 成为充分支持电子商务的机 型。
1999:
1/IBM为了对移动计算提供支持,发布了DB2 UDB 卫星版和DB2 Everywhere(这是一个适用于手持设备的微型关系数据库管理系统,后称为DB2 Everyplace)。
2/IBM发布了 Enterprise Information Portal,该产品可以跨数字图书 馆和 EDMSuite 提供一个统一的联合检索功能。
3/DB2增加了能够识别 XML 语言的文本检索功能,从而引入了 XML 支 持,并启动了DB2 XML Extender 的 beta 计划。
4/IBM发布了 Intel 平台上的 DB2 UDB for Linux。
5/IBM 研究机构将 DB2 的联邦(federation)功能和 Garlic 技术(Garlic的目标是使能大规模多媒体信息系统,集成到生命科学解决方案DiscoveryLink 中
2000:
1/IBM发布了 DB2 XML Extender,成为在业界第一个为数据库提供内置 XML 支持的厂商。
2/IBM将 Visual Warehouse 集成到 DB2 中,为DB2 提供了内置的数据仓库管理功能。
3/DB2对Linux 的支持进一步增强,能够支持基于 Intel 的 Linux集群、 发布了可以运行在主机上的 DB2 UDB for Linux和可以运行在嵌入式Linux上的 DB2 Everyplace。
4/DB2开始支持 NUMA-Q 平台,可以运行在该平台上的类 UNIX操作系统DYNIX/PTX 上。
5/DB2通过 Net.Search Extender 提供了 in-memory 高速文本检索功能。
6/IBM启动了数据库管理工具业务,起初着重于为主机上的 IMS 和 DB2 提供高效管理工具,最终这项业务扩展到 UNIX、Linux 和 Windows 平台。 Informix数据库产品也在支持之列。
7/IBM开始通过在DB2中集成 DataJoiner 来提供数据联邦(federation)功能 。
8/IBM发布了用于管理数字资产的Content Manager。IBM 数字图书馆和 EDMSuite 产品都被包含在一个单一的架构中来提供多媒体资产管理和企业内 容管理。荷兰国家图书馆、梵蒂冈图书馆都是最早的用户。
9/DB2在主机上销售出了它的第10000个许可证。
2001:
1/IBM以 10 亿美金收购了 Informix 的数据库业务,这次收购扩大了IBM 的分布式数据库业务。
2/DB2 OLAP Server中增添了数据挖掘功能。
3/IBM发布了第一个能够支持多种平台的 DB2 工具。
4/DB2提供了基于 SOAP 的 Web 服务的支持。DB2 XML Extender和存储过程可以使DB2成为 Web 服务的提供者。
5/IBM科学家在纳米碳管晶体管技术领域取得突破。IBM 用纳米碳管制造出了世界上第一批纳米晶体管--由直径 10 个原子大小的碳原子组成的小圆柱结 构,比当今基于硅的晶体管小 500 倍。
6/DB2拓宽了其数据联邦(federation)的能力,可以对WebSphere MQ消息队列和生命科学领域特定格式的文件提供支持。
7/IBM发布了 DB2 UDB for OS/390。
2002:
1/IBM发布了 Xperanto,这是一个基于标准的信息集成中间件的演示版, 可以用来优化对分散数据源的存取。这个演示版本使用了XML、Xquery、Web 服 务、数据联邦(federation)和全文检索等先进技术。
2/IBM宣布计划收购 Rational Software Corp,从而使得 IBM软件能够 支持从设计、开发、部署到管理和维护的完整过程。
3/DB2通过基于 SOAP 的 Web 服务扩展了数据联邦(federation)的能力。并可以作为 Web 服务的使用者出现在 Web 服务架构中。
4/DB2 OLAP Server中添加了hybrid(多维和关系)分析能力。
5/作为IBM 自主运算策略的一部分,SMART(自我管理和资源调节)技术 在 DB2 UDB V8.1 中首次正式应用。
6/IBM并购 Tarian Sotware,从而加强了Content Manager 中记录管理组 件的功能。
2003:
1/IBM将数据管理产品统一更名为信息管理产品,旨在改变很多用户对于 DB2 家族产品只能完成单一的数据管理的印象,强调了 DB2 家族在信息的处理与集成方面的能力。
2/DYNIX/ptxDB2 发布了 DB2 Information Integrator(该产品由以 前的 DB2 DataJoiner和 Enterprise Information Portal演化而来),该款软件旨在帮助客户即时访问、集成、管理和分析存储于企业内外任何平台上的各类信息。
2004:IBM DB2 在TPC 的两项测试中屡次刷新该测试的新纪录,在计算领 域的历史上树立了新的里程碑。其中在TPC-C 的测试中,它创造了计算速度领域新的世界记录,彻底粉碎了在该测试中每分钟三百万次交易的极限。
2005:经过长达5年的开发,IBM DB2 9将传统的高性能、易用性与自描述、灵活的XML相结合,转变成为交互式、充满活力的数据服务器。
2006:IBM发布DB2 9,将数据库领域带入XML时代。IT建设业已进入SOA(Service-Oriented Architecture)时代。实现SOA,其核心难点是顺畅解决不同应用间的数据交换问题。XML以其可扩展性、 与平台无关性和层次结构等特性,成为构建SOA时不同应用间进行数据交换的主流语言。而如何存储和管理几何量级的XML数据、直接支持原生XML文档成为SOA构建效率和质量的关键。在这这种情况下,IBM推出了全面支持Original XML的DB2 9,使XML数据的存储问题迎刃而解,开创了一个新的XML数据库时代。同年1月30日,IBM发布了一个DB2免费版本DB2Express-C。