文章詳情頁
DB2 9(Viper)快速入門
瀏覽:198日期:2023-03-24 09:22:38
正在看的db2教程是:DB2 9(Viper)快速入門。
創(chuàng)建數(shù)據(jù)庫對象
讓我們先來創(chuàng)建一個(gè)單獨(dú)的 DB2 Unicode 數(shù)據(jù)庫。在 DB2 Viper 中,只有 Unicode 數(shù)據(jù)庫才能同時(shí)存儲(chǔ) XML 文檔和 SQL 數(shù)據(jù)的更多傳統(tǒng)格式,比如整數(shù)、日期/時(shí)間、變長字符串,等等。隨后,您將在這個(gè)數(shù)據(jù)庫中創(chuàng)建對象來管理 XML 和其他類型的數(shù)據(jù)。
創(chuàng)建測試數(shù)據(jù)庫
為了創(chuàng)建一個(gè)新的 DB2 Unicode “測試” 數(shù)據(jù)庫,打開 DB2 命令窗口,發(fā)出語句來指定 Unicode 編碼集合和支持的區(qū)域,如 清單 1:
清單 1. 創(chuàng)建用于存儲(chǔ) XML 數(shù)據(jù)的數(shù)據(jù)庫
create database test using codeset UTF-8 territory us
一旦創(chuàng)建了 Unicode 數(shù)據(jù)庫,您就不需要發(fā)出任何專門的命令或采取任何進(jìn)一步措施來使 DB2 能夠以它自身分層的格式存儲(chǔ) XML 數(shù)據(jù),因?yàn)槟?DB2 系統(tǒng)已經(jīng)準(zhǔn)備好了。
創(chuàng)建示例表
為了存儲(chǔ) XML 數(shù)據(jù),請創(chuàng)建包含一個(gè)或多個(gè) XML 列的表。這些表充當(dāng)文檔集合的邏輯容器;在幕后,DB2 實(shí)際上使用了不同的存儲(chǔ)方案來存儲(chǔ) XML 和非 XML 數(shù)據(jù)。然而,使用表作為管理各種受支持的數(shù)據(jù)格式的邏輯對象,簡化了管理和應(yīng)用程序開發(fā)問題,特別是當(dāng)需要在一個(gè)單獨(dú)的查詢中集成不同的數(shù)據(jù)格式時(shí)。
您可以對 DB2 表進(jìn)行定義,使其只包含 XML 列、只包含傳統(tǒng) SQL 類型的列或者同時(shí)包含兩者。本文對后一種情況進(jìn)行了建模。清單 2 中的例子連接到 “測試” 數(shù)據(jù)庫,并創(chuàng)建了兩個(gè)表。第一個(gè)是 “items” 表,追蹤關(guān)于貨物的銷售情況和顧客對貨物的評價(jià)信息。第二個(gè)表追蹤的是關(guān)于 “客戶” 的信息,包括關(guān)于聯(lián)系信息的數(shù)據(jù)。注意 “comments” 和 “contactinfo” 是基于新的 DB2 XML 數(shù)據(jù)類型,而所有其他的列都是基于傳統(tǒng) SQL 數(shù)據(jù)類型的。
清單 2. 創(chuàng)建用于 XML 數(shù)據(jù)的表
connect to test;
create table items (
id int primary key not null,
brandname varchar(30),
itemname varchar(30),
sku int,
srp decimal(7,2),
comments xml
);
create table clients(
id int primary key not null,
name varchar(50),
status varchar(10),
contactinfo xml
);
如果您仔細(xì)地查看這些表定義例子,您將注意到 “comments” 和 “contactinfo” 列都沒有進(jìn)行 XML 文檔內(nèi)部結(jié)構(gòu)的定義。這是 DB2 的一個(gè)重要特性。用戶不需要為了存儲(chǔ)數(shù)據(jù)而預(yù)定義一個(gè) XML 數(shù)據(jù)結(jié)構(gòu)(或者,更準(zhǔn)確地說是一個(gè) XML 模式)。事實(shí)上,DB2 可以在一個(gè)單獨(dú)的列中存儲(chǔ)任何格式良好的 XML 文檔,這意味著不同模式的 XML 文檔 —— 或沒有和任何注冊的模式關(guān)聯(lián)的文檔 —— 都可以存儲(chǔ)在相同的 DB2 列中。當(dāng)我們討論如何在 DB2 中存儲(chǔ)數(shù)據(jù)時(shí),本文將深入討論這個(gè)特性。
創(chuàng)建視圖
您可以隨意地在包含 XML 數(shù)據(jù)的表上創(chuàng)建視圖,就像您可以在只包含傳統(tǒng) SQL 數(shù)據(jù)類型的表上創(chuàng)建視圖一樣。清單 3 中的例子創(chuàng)建具有 “Gold” 狀態(tài)的客戶的一個(gè)視圖:
清單 3. 創(chuàng)建一個(gè)包含 XML 數(shù)據(jù)的視圖
create view goldview as
select id, name, contactinfo
from clients where status="Gold";
關(guān)于索引的一點(diǎn)說明
最后,沒有必要在 XML 列上創(chuàng)建專門的索引來提高數(shù)據(jù)的查詢速度。因?yàn)檫@是一篇介紹性文章,而且示例數(shù)據(jù)很少,所以本文不會(huì)涵蓋到那個(gè)主題。然而,在生產(chǎn)環(huán)境中,定義一個(gè)適當(dāng)?shù)乃饕龑?shí)現(xiàn)最佳的性能來說很關(guān)鍵。查看本文結(jié)尾部分的 “參考資料”,以助于了解 DB2 的新索引技術(shù)。
存儲(chǔ) XML 數(shù)據(jù)
創(chuàng)建好表之后,現(xiàn)在您就可以用數(shù)據(jù)填充它們了。您可以通過直接發(fā)出 SQL INSERT 語句來完成這項(xiàng)工作,或者通過調(diào)用 DB2 IMPORT 工具在后臺(tái)發(fā)出 INSERT 語句。
使用 INSERT 語句
使用 INSERT,您可以直接向 DB2 中填充原始的 XML 數(shù)據(jù)。如果您已經(jīng)編寫了一個(gè)應(yīng)用程序并在變量中存儲(chǔ)了 XML 數(shù)據(jù),那么這可能是最容易的方法。但是如果您只是剛開始使用 DB2 Viper,并且不想編寫應(yīng)用程序,那么您可以交互地發(fā)出 INSERT 語句(我發(fā)現(xiàn)使用 DB2 Command Editor 是很方便的,雖然您也可以使用命令行處理器,如果您更喜歡那么做的話)。
要使用 DB2 Command Editor,請啟動(dòng) DB2 Control Center。從頂端的下拉菜單 “Tools” 中選擇 Command Editor,將出現(xiàn)一個(gè)單獨(dú)的窗口,如 圖 1 所示。
圖 1. DB2 Command Editor

在上面的窗格中輸入下列語句:
清單 4. 交互地插入 XML 數(shù)據(jù)
connect to test;
insert into clients values (77, "John Smith", "Gold",
xmlparse(document "<addr>111 Main St., Dallas, TX, 00112</addr>"
preserve whitespace)
)
單擊左側(cè)的綠色箭頭來執(zhí)行該命令。
注意,聯(lián)機(jī)提供 XML 數(shù)據(jù)(如 清單 4 所示)需要您調(diào)用 XMLPARSE 函數(shù),以把文檔從字符值轉(zhuǎn)換成 XML 類型值。本例中的輸入文檔相當(dāng)簡單 。如果文檔很大或者很復(fù)雜,把 XML 數(shù)據(jù)鍵入到像清單 4 所示的 INSERT 語句中是不切實(shí)際的。在大多數(shù)情況下,您使用主機(jī)變量或者參數(shù)標(biāo)記編寫一個(gè)應(yīng)用程序來插入數(shù)據(jù)。您將發(fā)現(xiàn)本文帶有一個(gè)簡要的 Java 代碼編寫例子。然而,由于這是一個(gè)介紹性的教程,所以我們不會(huì)詳細(xì)地討論應(yīng)用程序開發(fā)主題。相反,我們將討論使用數(shù)據(jù)填充 DB2 XML 列的另一種選擇 —— 使用 IMPORT 工具。
使用 DB2 IMPORT
為了幫助您快速掌握 DB2 自身的 XML 特性,請完成幾個(gè)普通的任務(wù),比如:
- 創(chuàng)建用于管理 XML 數(shù)據(jù)的數(shù)據(jù)庫對象,包括一個(gè)測試數(shù)據(jù)庫、一些示例表和視圖。
- 使用 INSERT 和 IMPORT 語句將 XML 數(shù)據(jù)填充到數(shù)據(jù)庫中。
- 驗(yàn)證您的 XML 數(shù)據(jù)。使用 DB2 開發(fā)和注冊您的 XML 模式,并在導(dǎo)入數(shù)據(jù)時(shí)使用 XMLVALIDATE 選項(xiàng)。
創(chuàng)建數(shù)據(jù)庫對象
讓我們先來創(chuàng)建一個(gè)單獨(dú)的 DB2 Unicode 數(shù)據(jù)庫。在 DB2 Viper 中,只有 Unicode 數(shù)據(jù)庫才能同時(shí)存儲(chǔ) XML 文檔和 SQL 數(shù)據(jù)的更多傳統(tǒng)格式,比如整數(shù)、日期/時(shí)間、變長字符串,等等。隨后,您將在這個(gè)數(shù)據(jù)庫中創(chuàng)建對象來管理 XML 和其他類型的數(shù)據(jù)。
創(chuàng)建測試數(shù)據(jù)庫
為了創(chuàng)建一個(gè)新的 DB2 Unicode “測試” 數(shù)據(jù)庫,打開 DB2 命令窗口,發(fā)出語句來指定 Unicode 編碼集合和支持的區(qū)域,如 清單 1:
清單 1. 創(chuàng)建用于存儲(chǔ) XML 數(shù)據(jù)的數(shù)據(jù)庫
create database test using codeset UTF-8 territory us
一旦創(chuàng)建了 Unicode 數(shù)據(jù)庫,您就不需要發(fā)出任何專門的命令或采取任何進(jìn)一步措施來使 DB2 能夠以它自身分層的格式存儲(chǔ) XML 數(shù)據(jù),因?yàn)槟?DB2 系統(tǒng)已經(jīng)準(zhǔn)備好了。
創(chuàng)建示例表
為了存儲(chǔ) XML 數(shù)據(jù),請創(chuàng)建包含一個(gè)或多個(gè) XML 列的表。這些表充當(dāng)文檔集合的邏輯容器;在幕后,DB2 實(shí)際上使用了不同的存儲(chǔ)方案來存儲(chǔ) XML 和非 XML 數(shù)據(jù)。然而,使用表作為管理各種受支持的數(shù)據(jù)格式的邏輯對象,簡化了管理和應(yīng)用程序開發(fā)問題,特別是當(dāng)需要在一個(gè)單獨(dú)的查詢中集成不同的數(shù)據(jù)格式時(shí)。
您可以對 DB2 表進(jìn)行定義,使其只包含 XML 列、只包含傳統(tǒng) SQL 類型的列或者同時(shí)包含兩者。本文對后一種情況進(jìn)行了建模。清單 2 中的例子連接到 “測試” 數(shù)據(jù)庫,并創(chuàng)建了兩個(gè)表。第一個(gè)是 “items” 表,追蹤關(guān)于貨物的銷售情況和顧客對貨物的評價(jià)信息。第二個(gè)表追蹤的是關(guān)于 “客戶” 的信息,包括關(guān)于聯(lián)系信息的數(shù)據(jù)。注意 “comments” 和 “contactinfo” 是基于新的 DB2 XML 數(shù)據(jù)類型,而所有其他的列都是基于傳統(tǒng) SQL 數(shù)據(jù)類型的。
清單 2. 創(chuàng)建用于 XML 數(shù)據(jù)的表
connect to test;
create table items (
id int primary key not null,
brandname varchar(30),
itemname varchar(30),
sku int,
srp decimal(7,2),
comments xml
);
create table clients(
id int primary key not null,
name varchar(50),
status varchar(10),
contactinfo xml
);
如果您仔細(xì)地查看這些表定義例子,您將注意到 “comments” 和 “contactinfo” 列都沒有進(jìn)行 XML 文檔內(nèi)部結(jié)構(gòu)的定義。這是 DB2 的一個(gè)重要特性。用戶不需要為了存儲(chǔ)數(shù)據(jù)而預(yù)定義一個(gè) XML 數(shù)據(jù)結(jié)構(gòu)(或者,更準(zhǔn)確地說是一個(gè) XML 模式)。事實(shí)上,DB2 可以在一個(gè)單獨(dú)的列中存儲(chǔ)任何格式良好的 XML 文檔,這意味著不同模式的 XML 文檔 —— 或沒有和任何注冊的模式關(guān)聯(lián)的文檔 —— 都可以存儲(chǔ)在相同的 DB2 列中。當(dāng)我們討論如何在 DB2 中存儲(chǔ)數(shù)據(jù)時(shí),本文將深入討論這個(gè)特性。
創(chuàng)建視圖
您可以隨意地在包含 XML 數(shù)據(jù)的表上創(chuàng)建視圖,就像您可以在只包含傳統(tǒng) SQL 數(shù)據(jù)類型的表上創(chuàng)建視圖一樣。清單 3 中的例子創(chuàng)建具有 “Gold” 狀態(tài)的客戶的一個(gè)視圖:
清單 3. 創(chuàng)建一個(gè)包含 XML 數(shù)據(jù)的視圖
create view goldview as
select id, name, contactinfo
from clients where status="Gold";
關(guān)于索引的一點(diǎn)說明
最后,沒有必要在 XML 列上創(chuàng)建專門的索引來提高數(shù)據(jù)的查詢速度。因?yàn)檫@是一篇介紹性文章,而且示例數(shù)據(jù)很少,所以本文不會(huì)涵蓋到那個(gè)主題。然而,在生產(chǎn)環(huán)境中,定義一個(gè)適當(dāng)?shù)乃饕龑?shí)現(xiàn)最佳的性能來說很關(guān)鍵。查看本文結(jié)尾部分的 “參考資料”,以助于了解 DB2 的新索引技術(shù)。
存儲(chǔ) XML 數(shù)據(jù)
創(chuàng)建好表之后,現(xiàn)在您就可以用數(shù)據(jù)填充它們了。您可以通過直接發(fā)出 SQL INSERT 語句來完成這項(xiàng)工作,或者通過調(diào)用 DB2 IMPORT 工具在后臺(tái)發(fā)出 INSERT 語句。
使用 INSERT 語句
使用 INSERT,您可以直接向 DB2 中填充原始的 XML 數(shù)據(jù)。如果您已經(jīng)編寫了一個(gè)應(yīng)用程序并在變量中存儲(chǔ)了 XML 數(shù)據(jù),那么這可能是最容易的方法。但是如果您只是剛開始使用 DB2 Viper,并且不想編寫應(yīng)用程序,那么您可以交互地發(fā)出 INSERT 語句(我發(fā)現(xiàn)使用 DB2 Command Editor 是很方便的,雖然您也可以使用命令行處理器,如果您更喜歡那么做的話)。
要使用 DB2 Command Editor,請啟動(dòng) DB2 Control Center。從頂端的下拉菜單 “Tools” 中選擇 Command Editor,將出現(xiàn)一個(gè)單獨(dú)的窗口,如 圖 1 所示。
圖 1. DB2 Command Editor

在上面的窗格中輸入下列語句:
清單 4. 交互地插入 XML 數(shù)據(jù)
connect to test;
insert into clients values (77, "John Smith", "Gold",
xmlparse(document "<addr>111 Main St., Dallas, TX, 00112</addr>"
preserve whitespace)
)
單擊左側(cè)的綠色箭頭來執(zhí)行該命令。
注意,聯(lián)機(jī)提供 XML 數(shù)據(jù)(如 清單 4 所示)需要您調(diào)用 XMLPARSE 函數(shù),以把文檔從字符值轉(zhuǎn)換成 XML 類型值。本例中的輸入文檔相當(dāng)簡單 。如果文檔很大或者很復(fù)雜,把 XML 數(shù)據(jù)鍵入到像清單 4 所示的 INSERT 語句中是不切實(shí)際的。在大多數(shù)情況下,您使用主機(jī)變量或者參數(shù)標(biāo)記編寫一個(gè)應(yīng)用程序來插入數(shù)據(jù)。您將發(fā)現(xiàn)本文帶有一個(gè)簡要的 Java 代碼編寫例子。然而,由于這是一個(gè)介紹性的教程,所以我們不會(huì)詳細(xì)地討論應(yīng)用程序開發(fā)主題。相反,我們將討論使用數(shù)據(jù)填充 DB2 XML 列的另一種選擇 —— 使用 IMPORT 工具。
使用 DB2 IMPORT
[1] [2] [3] 下一篇
標(biāo)簽:
DB2
相關(guān)文章:
1. MySQL Delete 刪數(shù)據(jù)后磁盤空間未釋放的原因2. MySql如何使用not in實(shí)現(xiàn)優(yōu)化3. MySQL中文亂碼問題解決方案4. 淺談數(shù)據(jù)庫日期類型字段設(shè)計(jì)應(yīng)該如何選擇5. MySQL性能優(yōu)化之一條SQL在MySQL中執(zhí)行的過程詳解6. Microsoft Office Access隱藏和顯示字段的方法7. MySQL Innodb 存儲(chǔ)結(jié)構(gòu) 和 存儲(chǔ)Null值 用法詳解8. mysql存儲(chǔ)過程游標(biāo)之loop循環(huán)解讀9. MySQL忘記root密碼以及遠(yuǎn)程無法連接的解決方法10. MySQL索引知識(shí)的一些小妙招總結(jié)
排行榜
