當前位置:首頁 » 編程語言 » 嵌入式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。