av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

理解DB2 9中新的查詢:XQuery

瀏覽:5日期: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ū)У淖詈笠徊糠?,保?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)?,F(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ù)庫
主站蜘蛛池模板: 亚洲国产精品激情在线观看 | 日日操av | 国产精品成人国产乱一区 | 日韩毛片播放 | 成人av一区二区三区 | 久久久国产一区二区三区四区小说 | 天天操天天天干 | 四虎影院在线免费观看 | 一本一道久久a久久精品综合 | 亚洲国产成人精 | 中文字幕精品视频 | 天天曰夜夜 | 国产91丝袜在线播放 | 欧美日韩在线一区二区 | 美女啪啪国产 | 国产激情免费视频 | 午夜成人在线视频 | 日韩免费高清视频 | 欧美男人天堂 | 免费成人高清在线视频 | 国产精品毛片在线 | 国产精品揄拍一区二区久久国内亚洲精 | 国产欧美日韩一区 | 国产精品欧美精品日韩精品 | 亚洲视频一区在线观看 | 久久手机在线视频 | 9999在线视频| 亚洲有码转帖 | 伊人网综合 | 亚洲视频1区 | 国产剧情一区 | 午夜精品一区二区三区在线观看 | tube国产| 精品国产欧美一区二区 | 伊人最新网址 | 成年人视频在线免费观看 | 亚洲成人中文字幕 | 成人欧美一区二区三区在线观看 | 久久久青草 | 色天堂影院 | 一区二区日本 |