亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > 綜合 > 正文

理解DB2 9中新的查詢:XQuery

2024-07-21 02:41:48
字體:
來源:轉載
供稿:網友

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

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

  Visual XQuery Builder

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

  要試一下 XQuery Builder,可以打開 DB2 Workbench,并開始一個新項目:選擇 File → New → Data Development PRoject,或者單擊 New Project 圖標,然后選擇 Data Development Project。

  接著,將該項目命名為 XQueryProject,并保留其他默認設置。如果已經連接到 SAMPLE 數據庫,那么在 Use an Existing Connection 下選擇它。如果還沒有連接到 SAMPLE 數據庫,那么采取以下步驟:

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

  在 New Project 向導的最后一部分,保留 Routine Parameters 的默認設置,并單擊 Finish。

  Workbench 創建好新項目之后,應該可以在左上區的 Data Project Explorer 中看到這個項目。在 Database Explorer 中,在新建的項目下面可以看到 SAMPLE 數據庫。如果還沒有連接到該數據庫,那么單擊右鍵,選擇 Connect 或 Reconnect,并輸入憑證。

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

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

  Developer Workbench 的部分威力依賴于它所提供的一組向導,其中大多數向導可以在這些文件夾上通過上下文菜單打開。在這里可以添加 XSD 文件到項目中,以便于 XML 操縱。還可以構建新的存儲過程、腳本,甚至包括自己的函數。但是在這里我們將把注意力放在第一個文件夾上:XML Queries。

  創建一個 XML 查詢

  您可以通過打開 New XML Query 向導來創建第一個 XML 查詢。首先,在 Data Project Explorer 面板中的 XML Queries 文件夾上單擊右鍵,然后選擇 New XML Query。 將這個 XML 查詢命名為 SimpleXQuery。

  當看到 Add representative XML documents 選項時,單擊 Add。這里有兩個選項,一是讓 Workbench 根據示例數據發現并創建一個 XML 模式,另外一種選項是使用一個已有的模式:

  •   Local workspace:如果已經為要使用的數據集生成了一個模式,或者已經將一個已有的 XSD 或 DTD 文檔保存到工作區,那么選擇該選項并找到該模式。
  •   Database: 如果要根據已有的 XML 數據創建一個新模式,那么選擇 Database 選項。

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

  在該向導接下來的屏幕中,可以將文檔與特定的 XML 文檔關聯起來,您將在該 XML 文檔上構建查詢。在 SAMPLE 數據庫中,每一行可以包含一個具有不同模式的 XML 文檔。在這里,可以在行之間導航,以選擇要使用的模式。對于這個例子,選擇 Document 2 (見圖 1)。

  圖 1. XML 文檔行

  圖 1. XML 文檔行

  在該向導的最后一個屏幕中,該向導要求您將文檔與 XML 列相關聯。如果您一直使用一個已有的 XML 模式,那么需要在這里關聯它。但是這個例子是基于已有數據的模式的,因此默認情況下模式文檔已經是關聯的。

  現在您已經創建了一個新的 XQuery View,并將其命名為 SimpleXQuery.xqm。我們花一點時間來探索一下這個視圖。您將看到,示例數據使用指定列的第一行的 XML 模式列出。您還將看到大量的語法,這些語法可以直接被拖放到設計工作區,包括 Constructors、Expressions、Functions 和 Variables,它們都是基于目前萬維網聯盟(W3C)正在評審的 XQuery 規范的。

  構建一個可視化 XQuery

  有了新的 XQuery 網格,您將創建一個簡單的包含一些條件的查詢。

  展開 Constructors 類別,將一個新的 Element 拖放到網格上。對于拖放到網格上的每個項目,都可以在它右邊看到一個 Step Into 圖標。單擊 new_element 的這個圖標。

  將該元素的 Name 改為 toronto(見圖 2)。不用關心 Attributes。 拖放 Element Value 下的 name 節點。注意,name 節點現在也有一個 Step Into 圖標。單擊該圖標。

  圖 2. XML 元素

  圖 2. XML 元素

  在 Visual Builder 中,每當單擊 Step Into,就會打開相應項目所特有的一個子頁面。對于 XML 節點,它打開 For、Let、Where、Order by、Return diagram 或 FLWOR。這個圖基本上相當于 SQL 中的 SELECT-FROM-WHERE 子句,它允許您定義查詢的選擇標準。

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

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

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

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

  圖 4. 定義 contains() 函數

  圖 4. 定義 contains() 函數

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

  再次單擊 Step Out,返回到 root 級節點。在這里可以繼續添加節點?,F在,運行一下查詢,看看結果。在右上角的圖標上單擊右鍵,從下拉菜單中選擇 Run...,或者從主菜單中選擇 Run → Run...。

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

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

  圖 5. 示例 XQuery 的結果

  圖 5. 示例 XQuery 的結果

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

  最后一個特性

  現在輪到了我認為是 Visual Builder 最好的一個特性?;氐骄W格上,選擇左上角的 Source 標簽頁。您將看到自動生成的描述查詢的 XQuery 代碼。該代碼的主體可以直接在數據庫查詢或存儲過程中使用,這對于動態構建 XML 查詢是一種快速有效的方法。我們的例子生成了如清單 1 所示的源代碼。

  

  邊練邊學

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲最新av在线| 一本一本久久a久久精品综合小说| 日韩精品中文字幕在线播放| 国产+人+亚洲| 狠狠综合久久av一区二区小说| 久久久久久久一区二区三区| 国产免费一区二区三区在线能观看| 亚洲的天堂在线中文字幕| 日韩在线免费视频观看| 日本精品视频在线| 国产一区二区三区在线免费观看| 亚洲男人的天堂网站| 日韩性生活视频| 欧美性精品220| 精品久久久久久久久久久久久| 一区二区三欧美| xxxx欧美18另类的高清| 国产精品视频一区二区高潮| 欧美成人剧情片在线观看| 精品国产精品自拍| 最新国产成人av网站网址麻豆| 少妇高潮久久77777| 亚洲成人在线视频播放| 国产性色av一区二区| 久久免费视频在线| 国产97在线播放| 欧美激情精品久久久久久大尺度| 日韩中文字幕久久| 亚洲天堂免费观看| 欧美日韩黄色大片| 国产视频亚洲视频| 亚洲欧洲一区二区三区在线观看| 日韩最新av在线| 欧美精品在线极品| 亚洲视频在线观看免费| 欧美国产日韩一区| 精品一区二区亚洲| www.日韩免费| 精品久久久久久电影| 国模私拍视频一区| 一区二区成人精品| 久久久久久久久久久免费精品| 亚洲精品99999| 日韩电影免费观看中文字幕| 久久91亚洲人成电影网站| 亚洲国内高清视频| 色诱女教师一区二区三区| 91在线视频导航| 成人午夜黄色影院| 国产精品极品尤物在线观看| 欧美在线视频观看免费网站| 国产精品天天狠天天看| 98精品国产高清在线xxxx天堂| 98精品国产高清在线xxxx天堂| 欧美高跟鞋交xxxxhd| 国产亚洲精品久久久久动| 亚洲黄在线观看| 日韩欧美大尺度| 久久久久在线观看| 亚洲天堂第二页| 91精品国产一区| 亚洲第一av在线| 国产精品久久999| 国产91色在线免费| 久久久精品视频成人| 日本精品va在线观看| 欧美老妇交乱视频| www.久久草.com| 久久久精品国产一区二区| 亚洲跨种族黑人xxx| 日韩在线一区二区三区免费视频| 91精品国产电影| 亚洲激情在线视频| 一区二区欧美久久| 色悠悠久久久久| 日韩欧美国产黄色| 91精品在线看| 亚洲人成伊人成综合网久久久| xvideos成人免费中文版| 91精品视频播放| 亚洲高清av在线| 高清在线视频日韩欧美| 国产成人极品视频| 国产日韩一区在线| 欧美亚洲国产另类| 韩国v欧美v日本v亚洲| 欧美高清视频在线播放| 欧美成人精品不卡视频在线观看| 久久精品亚洲热| 亚洲欧美日韩天堂| 精品美女久久久久久免费| 欧美日韩激情视频8区| 91九色蝌蚪国产| 欧美国产日韩一区二区在线观看| 综合国产在线视频| 久久精品夜夜夜夜夜久久| 国产日韩专区在线| 国产成人精品久久二区二区91| 国产97色在线|日韩| 国产欧美日韩综合精品| 国产一区二区三区毛片| 亚洲社区在线观看| 国产成人亚洲综合| 日韩av网站导航| 日韩精品在线视频美女| 亚洲第一精品福利| 伊人伊人伊人久久| 国产成人avxxxxx在线看| 国产色综合天天综合网| 国产精品主播视频| 精品久久久久久久久久久久久久| 国产精品99久久久久久久久久久久| 成人综合国产精品| 亚洲国产欧美日韩精品| 免费91在线视频| 中文国产亚洲喷潮| 欧美天堂在线观看| 国产午夜精品免费一区二区三区| 亚洲免费高清视频| 在线视频一区二区| 欧美日韩成人在线观看| 日韩高清电影免费观看完整版| 琪琪第一精品导航| www.国产一区| 欧美激情一区二区三区高清视频| 日韩欧美在线免费观看| 91精品国产综合久久香蕉的用户体验| 91精品久久久久久久久久久久久久| 亚洲精品国产suv| 亚洲香蕉伊综合在人在线视看| 欧美重口另类videos人妖| 欧美日韩高清在线观看| 欧美激情欧美激情在线五月| 欧美国产日韩中文字幕在线| 日韩av色在线| 国产脚交av在线一区二区| 色爱av美腿丝袜综合粉嫩av| 日韩av电影中文字幕| 91欧美精品午夜性色福利在线| 久久夜精品香蕉| 孩xxxx性bbbb欧美| 欧美激情一区二区三区久久久| 国产精品美女主播在线观看纯欲| 国产精品一香蕉国产线看观看| 国内免费精品永久在线视频| 九九热这里只有精品免费看| 久久久久久久久久久亚洲| 日韩在线欧美在线国产在线| 亚洲a中文字幕| 色哟哟亚洲精品一区二区| 午夜精品久久久久久久久久久久久| 亚洲精品国产成人| 欧美精品激情在线| 国产一区二区欧美日韩| 欧美性精品220| 久久久久久久成人| 久久久久在线观看| 日韩女优在线播放| 在线观看欧美日韩国产| 国产专区欧美专区| 国产亚洲欧美日韩一区二区| 欧美激情性做爰免费视频| 欧美激情视频网址| 国产精品盗摄久久久|