国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

理解DB2 9中新的查詢:XQuery

瀏覽:3日期:2023-11-08 12:56:00

IBM 新的 DB2 9 為開(kāi)發(fā)人員提供了一種更快、更有效的方式來(lái)管理關(guān)系數(shù)據(jù)庫(kù)中的 XML 文檔。然而,為了挖掘出更多的潛能,數(shù)據(jù)庫(kù)開(kāi)發(fā)人員還需要在他們的武器庫(kù)中增加一種新的語(yǔ)法:XQuery。雖然 XQuery 學(xué)起來(lái)很簡(jiǎn)單,但是它非常完善,足以構(gòu)造更高級(jí)的耗時(shí)且費(fèi)力的查詢。

進(jìn)入 DB2 9 Developer Workbench。新的 Workbench 被打包成一個(gè)單獨(dú)的安裝程序,它取代了其前輩 DB2 Development Center。它基于 Eclipse 引擎,在 Visual XQuery Builder 中提供了新的高級(jí) XML 功能,包括基于已有的 XML 字段或單獨(dú)的 XML 模式文檔可視化地設(shè)計(jì) XQuery 的能力。Developer Workbench 還可以與 DB2 for z/OS 數(shù)據(jù)服務(wù)器一起使用。

Visual XQuery Builder

您可以在 SAMPLE 數(shù)據(jù)庫(kù)上運(yùn)行一些簡(jiǎn)單的查詢,試一試 XQuery Builder。隨 DB2 9 一起發(fā)布的 SAMPLE 數(shù)據(jù)庫(kù)中有一些具有 XML 字段的表,這些表都填充了示例數(shù)據(jù)。例如 CUSTOMER 表,這個(gè)表有 XML 類(lèi)型的 INFO 和 HISTORY 字段。還可以用命令 db2sampl -xml 創(chuàng)建自己的示例數(shù)據(jù)庫(kù)。

要試一下 XQuery Builder,可以打開(kāi) DB2 Workbench,并開(kāi)始一個(gè)新項(xiàng)目:選擇 File → New → Data Development Project,或者單擊 New Project 圖標(biāo),然后選擇 Data Development Project。

接著,將該項(xiàng)目命名為 XQueryProject,并保留其他默認(rèn)設(shè)置。如果已經(jīng)連接到 SAMPLE 數(shù)據(jù)庫(kù),那么在 Use an Existing Connection 下選擇它。如果還沒(méi)有連接到 SAMPLE 數(shù)據(jù)庫(kù),那么采取以下步驟:

選擇 Create a New Connection。 在 Connection Parameters 下, 選擇 DB2 UDB v9.1。 指定 SAMPLE 作為數(shù)據(jù)庫(kù)名,保留其他默認(rèn)設(shè)置。 輸入登錄名和密碼(如果不特別指定的話,就是系統(tǒng)登錄名/密碼),然后單擊 Test Connection。 如果一切正常,則單擊 Next 繼續(xù)。

在 New Project 向?qū)У淖詈笠徊糠郑A?Routine Parameters 的默認(rèn)設(shè)置,并單擊 Finish。

Workbench 創(chuàng)建好新項(xiàng)目之后,應(yīng)該可以在左上區(qū)的 Data Project Explorer 中看到這個(gè)項(xiàng)目。在 Database Explorer 中,在新建的項(xiàng)目下面可以看到 SAMPLE 數(shù)據(jù)庫(kù)。如果還沒(méi)有連接到該數(shù)據(jù)庫(kù),那么單擊右鍵,選擇 Connect 或 Reconnect,并輸入憑證。

展開(kāi)這兩個(gè)窗口中的條目。注意,在 Data Project Explorer 中的新項(xiàng)目下,有下面一些空的文件夾:

XML Queries SQL Scripts Stored Procedures XML Schema Documents User-Defined Functions。

Developer Workbench 的部分威力依賴(lài)于它所提供的一組向?qū)В渲写蠖鄶?shù)向?qū)Э梢栽谶@些文件夾上通過(guò)上下文菜單打開(kāi)。在這里可以添加 XSD 文件到項(xiàng)目中,以便于 XML 操縱。還可以構(gòu)建新的存儲(chǔ)過(guò)程、腳本,甚至包括自己的函數(shù)。但是在這里我們將把注意力放在第一個(gè)文件夾上:XML Queries。

創(chuàng)建一個(gè) XML 查詢

您可以通過(guò)打開(kāi) New XML Query 向?qū)?lái)創(chuàng)建第一個(gè) XML 查詢。首先,在 Data Project Explorer 面板中的 XML Queries 文件夾上單擊右鍵,然后選擇 New XML Query。 將這個(gè) XML 查詢命名為 SimpleXQuery。

當(dāng)看到 Add representative XML documents 選項(xiàng)時(shí),單擊 Add。這里有兩個(gè)選項(xiàng),一是讓 Workbench 根據(jù)示例數(shù)據(jù)發(fā)現(xiàn)并創(chuàng)建一個(gè) XML 模式,另外一種選項(xiàng)是使用一個(gè)已有的模式:

Local workspace:如果已經(jīng)為要使用的數(shù)據(jù)集生成了一個(gè)模式,或者已經(jīng)將一個(gè)已有的 XSD 或 DTD 文檔保存到工作區(qū),那么選擇該選項(xiàng)并找到該模式。 Database: 如果要根據(jù)已有的 XML 數(shù)據(jù)創(chuàng)建一個(gè)新模式,那么選擇 Database 選項(xiàng)。

對(duì)于這個(gè)例子,選擇 Database。 對(duì)于 XML 列或模式,導(dǎo)航到 CUSTOMER.INFO(如果不確定如何找到它,可以在線參考圖 A)。

在該向?qū)Ы酉聛?lái)的屏幕中,可以將文檔與特定的 XML 文檔關(guān)聯(lián)起來(lái),您將在該 XML 文檔上構(gòu)建查詢。在 SAMPLE 數(shù)據(jù)庫(kù)中,每一行可以包含一個(gè)具有不同模式的 XML 文檔。在這里,可以在行之間導(dǎo)航,以選擇要使用的模式。對(duì)于這個(gè)例子,選擇 Document 2 (見(jiàn)圖 1)。

圖 1. XML 文檔行

理解DB2 9中新的查詢:XQuery

在該向?qū)У淖詈笠粋€(gè)屏幕中,該向?qū)б竽鷮⑽臋n與 XML 列相關(guān)聯(lián)。如果您一直使用一個(gè)已有的 XML 模式,那么需要在這里關(guān)聯(lián)它。但是這個(gè)例子是基于已有數(shù)據(jù)的模式的,因此默認(rèn)情況下模式文檔已經(jīng)是關(guān)聯(lián)的。

現(xiàn)在您已經(jīng)創(chuàng)建了一個(gè)新的 XQuery View,并將其命名為 SimpleXQuery.xqm。我們花一點(diǎn)時(shí)間來(lái)探索一下這個(gè)視圖。您將看到,示例數(shù)據(jù)使用指定列的第一行的 XML 模式列出。您還將看到大量的語(yǔ)法,這些語(yǔ)法可以直接被拖放到設(shè)計(jì)工作區(qū),包括 Constructors、Expressions、Functions 和 Variables,它們都是基于目前萬(wàn)維網(wǎng)聯(lián)盟(W3C)正在評(píng)審的 XQuery 規(guī)范的。

構(gòu)建一個(gè)可視化 XQuery

有了新的 XQuery 網(wǎng)格,您將創(chuàng)建一個(gè)簡(jiǎn)單的包含一些條件的查詢。

展開(kāi) Constructors 類(lèi)別,將一個(gè)新的 Element 拖放到網(wǎng)格上。對(duì)于拖放到網(wǎng)格上的每個(gè)項(xiàng)目,都可以在它右邊看到一個(gè) Step Into 圖標(biāo)。單擊 new_element 的這個(gè)圖標(biāo)。

將該元素的 Name 改為 toronto(見(jiàn)圖 2)。不用關(guān)心 Attributes。 拖放 Element Value 下的 name 節(jié)點(diǎn)。注意,name 節(jié)點(diǎn)現(xiàn)在也有一個(gè) Step Into 圖標(biāo)。單擊該圖標(biāo)。

圖 2. XML 元素

在 Visual Builder 中,每當(dāng)單擊 Step Into,就會(huì)打開(kāi)相應(yīng)項(xiàng)目所特有的一個(gè)子頁(yè)面。對(duì)于 XML 節(jié)點(diǎn),它打開(kāi) For、Let、Where、Order by、Return diagram 或 FLWOR。這個(gè)圖基本上相當(dāng)于 SQL 中的 SELECT-FROM-WHERE 子句,它允許您定義查詢的選擇標(biāo)準(zhǔn)。

Workbench 自動(dòng)為 FLWOR 語(yǔ)句所需的綁定變量賦值,不過(guò)可以改變它的值。在這個(gè)例子中,它被命名為 name0。默認(rèn)情況下,這個(gè)例子中的 Sequence 和 Return 值都是 name 節(jié)點(diǎn)。您只需定義條件。為此,展開(kāi)左側(cè)的 Functions 類(lèi)別,從下拉菜單中選擇 String Functions,如果該項(xiàng)還沒(méi)有被選中的話。您有很多內(nèi)建的函數(shù)可以選擇,因此在 WHERE 子句時(shí)有很多選擇余地。這個(gè)例子的目標(biāo)是選擇來(lái)自 Toronto 的所有客戶。最直接的方法是將 city 節(jié)點(diǎn)拖放到 Operand 1 下,選擇 = 作為 Operator,鍵入 Toronto 作為 Operand 2。還可以使用 match() 函數(shù)來(lái)定義一個(gè)模式,或者混合任意數(shù)量的字符串函數(shù)來(lái)創(chuàng)建更明確的標(biāo)準(zhǔn)。為簡(jiǎn)單起見(jiàn),拖出 contains() 函數(shù)并將它放在 Operand 1 下(見(jiàn)圖 3)。

圖 3. 包含 contains() 函數(shù)的 FLWOR

由于 contains() 函數(shù)返回 True 或 False,因此不需要再指定一個(gè)操作數(shù)。單擊該函數(shù)對(duì)應(yīng)的 Step Into,定義該函數(shù)的參數(shù)。contains() 函數(shù)帶兩個(gè)參數(shù):string 和 substring。將 city 節(jié)點(diǎn)拖到 string 參數(shù)上。在 substring 旁邊輸入 onto。這將選出包含字母 onto(全部為小寫(xiě))的所有城市。這個(gè)步驟類(lèi)似于 SQL 中的 LIKE '%onto%'。

圖 4. 定義 contains() 函數(shù)

在該窗口的右上角,可以看到一個(gè) Step Out 圖標(biāo)。單擊該圖標(biāo),或者從下拉菜單中選擇 OK,進(jìn)入到上一級(jí)。在 For Logic 定義中,增加一個(gè)字段。將 phone 元素拖放到 Return 網(wǎng)格上的 name 下。然后再次單擊 Step Out。

再次單擊 Step Out,返回到 root 級(jí)節(jié)點(diǎn)。在這里可以繼續(xù)添加節(jié)點(diǎn)。現(xiàn)在,運(yùn)行一下查詢,看看結(jié)果。在右上角的圖標(biāo)上單擊右鍵,從下拉菜單中選擇 Run...,或者從主菜單中選擇 Run → Run...。

這里還有一次機(jī)會(huì)將 XML 列與一個(gè)定義文檔相關(guān)聯(lián),但是由于它已經(jīng)被正確地關(guān)聯(lián)了,因此只需單擊 Finish。在 Data Output 視圖中,應(yīng)該可以看到 ...。 單擊省略號(hào)查看整個(gè)結(jié)果集。

您可以查看兩種格式的結(jié)果:XML Tree (見(jiàn)圖 5) 或 Source,后者是一種無(wú)格式文本轉(zhuǎn)儲(chǔ)。在這個(gè)簡(jiǎn)單的例子中,所有結(jié)果都被收集在一個(gè)根節(jié)點(diǎn)下,包括任何重復(fù)的客戶。但是,通過(guò)較小的調(diào)整,就可以改變節(jié)點(diǎn)層次,增加附加字段,刪除重復(fù)的行,或者增加聚合函數(shù)。

圖 5. 示例 XQuery 的結(jié)果

還可以對(duì)一個(gè)外部文件執(zhí)行 Save As... 命令。實(shí)際上,如果單擊 Save As 并保存到 demo.xml,可以在 Web 瀏覽器中打開(kāi)這個(gè)文件,并看到包含查詢結(jié)果的一個(gè)基本的(但是不完全是格式良好的)XML 文檔。

最后一個(gè)特性

現(xiàn)在輪到了我認(rèn)為是 Visual Builder 最好的一個(gè)特性。回到網(wǎng)格上,選擇左上角的 Source 標(biāo)簽頁(yè)。您將看到自動(dòng)生成的描述查詢的 XQuery 代碼。該代碼的主體可以直接在數(shù)據(jù)庫(kù)查詢或存儲(chǔ)過(guò)程中使用,這對(duì)于動(dòng)態(tài)構(gòu)建 XML 查詢是一種快速有效的方法。我們的例子生成了如清單 1 所示的源代碼。

邊練邊學(xué)

這個(gè)例子只是開(kāi)始探索 Visual XQuery Builder 的潛能。除了幫助您創(chuàng)建復(fù)雜的嵌入式 XML 查詢外,它還可以生成源代碼,通過(guò)查看源代碼,或者在其他地方使用該源代碼,有助于學(xué)習(xí) XQuery 的語(yǔ)法。

標(biāo)簽: DB2 數(shù)據(jù)庫(kù)
主站蜘蛛池模板: 郸城县| 虞城县| 西乌| 嵩明县| 鞍山市| 辉县市| 赤峰市| 通化市| 娄底市| 沾化县| 灵武市| 丽水市| 南部县| 宁蒗| 中西区| 凤城市| 浪卡子县| 泸定县| 长顺县| 外汇| 台中县| 兰考县| 刚察县| 凉山| 保山市| 崇仁县| 太仆寺旗| 特克斯县| 永和县| 武义县| 浙江省| 广宁县| 盐池县| 东乌| 灵台县| 自治县| 申扎县| 沧源| 蒲江县| 济源市| 平和县|