亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

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

理解DB2 9中新的查詢:XQuery

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

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

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

Visual XQuery Builder

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

要試一下 XQuery Builder,可以打開 DB2 Workbench,并開始一個(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ù)庫,那么在 Use an Existing Connection 下選擇它。如果還沒有連接到 SAMPLE 數(shù)據(jù)庫,那么采取以下步驟:

選擇 Create a New Connection。 在 Connection Parameters 下, 選擇 DB2 UDB v9.1。 指定 SAMPLE 作為數(shù)據(jù)庫名,保留其他默認(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ù)庫。如果還沒有連接到該數(shù)據(jù)庫,那么單擊右鍵,選擇 Connect 或 Reconnect,并輸入憑證。

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

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

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

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

您可以通過打開 New XML Query 向?qū)韯?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)。

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

在該向?qū)Ы酉聛淼钠聊恢校梢詫⑽臋n與特定的 XML 文檔關(guān)聯(lián)起來,您將在該 XML 文檔上構(gòu)建查詢。在 SAMPLE 數(shù)據(jù)庫中,每一行可以包含一個(gè)具有不同模式的 XML 文檔。在這里,可以在行之間導(dǎo)航,以選擇要使用的模式。對于這個(gè)例子,選擇 Document 2 (見圖 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í)間來探索一下這個(gè)視圖。您將看到,示例數(shù)據(jù)使用指定列的第一行的 XML 模式列出。您還將看到大量的語法,這些語法可以直接被拖放到設(shè)計(jì)工作區(qū),包括 Constructors、Expressions、Functions 和 Variables,它們都是基于目前萬維網(wǎng)聯(lián)盟(W3C)正在評審的 XQuery 規(guī)范的。

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

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

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

將該元素的 Name 改為 toronto(見圖 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,就會打開相應(yīng)項(xiàng)目所特有的一個(gè)子頁面。對于 XML 節(jié)點(diǎn),它打開 For、Let、Where、Order by、Return diagram 或 FLWOR。這個(gè)圖基本上相當(dāng)于 SQL 中的 SELECT-FROM-WHERE 子句,它允許您定義查詢的選擇標(biāo)準(zhǔn)。

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

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

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

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

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

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

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

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

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

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

最后一個(gè)特性

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

邊練邊學(xué)

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

標(biāo)簽: DB2 數(shù)據(jù)庫
主站蜘蛛池模板: 91精品在线免费观看 | 久久精品国产99国产精偷 | 久久蜜桃亚洲一区二区 | 亚洲欧洲精品视频 | aaaa级日本片免费视频 | 国产亚洲精品aa在线看 | 精品国产1000部91麻豆 | 一级美女片| 色婷婷狠狠 | 狠狠色噜噜狠狠狠97影音先锋 | 亚洲精品一区vv国产 | 亚洲精品视频网 | 992tv快乐视频在线啪啪免费 | 五十路一区二区三区视频 | 成人 亚洲| 最新亚洲精品国自产在线 | 国产一卡| 国产又爽又色在线观看 | 中文字幕午夜乱理片11111 | 黄色一级视频欧美 | 亚洲欧美日韩高清一区二区三区 | 亚洲 欧美 精品 中文第三 | 国产一级毛片夜一级毛片 | 自拍啪啪 | 日韩国产有码在线观看视频 | 国产不卡在线蜜 | 久久国产精彩视频 | 青青操手机看 | 日韩在线视屏 | 国产亚洲美女精品久久久 | 在线视频 一区二区 | 在线观看大片的网站 | 亚洲性图| 狠狠色丁婷婷综合久久 | 欧美精品在线视频观看 | 欧美在线黄色片 | 又黄又爽又成人免费视频 | 国产精品高清久久久久久久 | keez在线观看视频免费 | 欧美成人午夜精品免费福利 | 仑乱高清在线一级播放 |