电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

理解DB2 9中新的查詢:XQuery

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

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 數據庫,那么采取以下步驟:

選擇 Create a New Connection。 在 Connection Parameters 下, 選擇 DB2 UDB v9.1。 指定 SAMPLE 作為數據庫名,保留其他默認設置。 輸入登錄名和密碼(如果不特別指定的話,就是系統登錄名/密碼),然后單擊 Test Connection。 如果一切正常,則單擊 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 文檔行

理解DB2 9中新的查詢:XQuery

在該向導的最后一個屏幕中,該向導要求您將文檔與 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 元素

在 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

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

圖 4. 定義 contains() 函數

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

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

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

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

圖 5. 示例 XQuery 的結果

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

最后一個特性

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

邊練邊學

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

標簽: DB2 數據庫
主站蜘蛛池模板: 扬尘监测_扬尘监测系统_带证扬尘监测设备 - 郑州港迪科技有限公司 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 陕西高职单招-陕西高职分类考试网| 郑州墨香品牌设计公司|品牌全案VI设计公司 | 环保袋,无纺布袋,无纺布打孔袋,保温袋,环保袋定制,环保袋厂家,环雅包装-十七年环保袋定制厂家 | POM塑料_PBT材料「进口」聚甲醛POM杜邦原料、加纤PBT塑料报价格找利隆塑料 | 紧急泄压人孔_防爆阻火器_阻火呼吸阀[河北宏泽石化] | 聚丙烯酰胺PAM-聚合氯化铝PAC-絮凝剂-河南博旭环保科技有限公司 巨野电机维修-水泵维修-巨野县飞宇机电维修有限公司 | 菲希尔FISCHER测厚仪-铁素体检测仪-上海吉馨实业发展有限公司 | 锻造液压机,粉末冶金,拉伸,坩埚成型液压机定制生产厂家-山东威力重工官方网站 | 智能楼宇-楼宇自控系统-楼宇智能化-楼宇自动化-三水智能化 | 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 | BESWICK球阀,BESWICK接头,BURKERT膜片阀,美国SEL继电器-东莞市广联自动化科技有限公司 | 避光流动池-带盖荧光比色皿-生化流动比色皿-宜兴市晶科光学仪器 东莞爱加真空科技有限公司-进口真空镀膜机|真空镀膜设备|Polycold维修厂家 | 托盘租赁_塑料托盘租赁_托盘出租_栈板出租_青岛托盘租赁-优胜必达 | OLChemim试剂-ABsciex耗材-广州市自力色谱科仪有限公司 | 硅胶布|电磁炉垫片|特氟龙胶带-江苏浩天复合材料有限公司 | 钢格板|热镀锌钢格板|钢格栅板|钢格栅|格栅板-安平县昊泽丝网制品有限公司 | 北京签证代办_签证办理_商务签证_旅游签证_寰球签证网 | 超声波清洗机-超声波清洗设备定制生产厂家 - 深圳市冠博科技实业有限公司 | 【灵硕展览集团】展台展会设计_展览会展台搭建_展览展示设计一站式服务公司 | 北京开源多邦科技发展有限公司官网 | 乐泰胶水_loctite_乐泰胶_汉高乐泰授权(中国)总代理-鑫华良供应链 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | 阴离子_阳离子聚丙烯酰胺厂家_聚合氯化铝价格_水处理絮凝剂_巩义市江源净水材料有限公司 | 污水/卧式/潜水/钻井/矿用/大型/小型/泥浆泵,价格,参数,型号,厂家 - 安平县鼎千泵业制造厂 | 蔬菜配送公司|蔬菜配送中心|食材配送|饭堂配送|食堂配送-首宏公司 | 贴片电感_贴片功率电感_贴片绕线电感_深圳市百斯特电子有限公司 贴片电容代理-三星电容-村田电容-风华电容-国巨电容-深圳市昂洋科技有限公司 | 3d打印服务,3d打印汽车,三维扫描,硅胶复模,手板,快速模具,深圳市精速三维打印科技有限公司 | 轻型地埋电缆故障测试仪,频响法绕组变形测试仪,静荷式卧式拉力试验机-扬州苏电 | 媒介云-全网整合营销_成都新闻媒体发稿_软文发布平台 | 氢氧化钙设备, 氢氧化钙生产线-淄博惠琛工贸有限公司 | 宿舍管理系统_智慧园区系统_房屋/房产管理系统_公寓管理系统 | 山东钢格板|栅格板生产厂家供应商-日照森亿钢格板有限公司 | 彩超机-黑白B超机-便携兽用B超机-多普勒彩超机价格「大为彩超」厂家 | 微波萃取合成仪-电热消解器价格-北京安合美诚科学仪器有限公司 | 【ph计】|在线ph计|工业ph计|ph计厂家|ph计价格|酸度计生产厂家_武汉吉尔德科技有限公司 | 金属切削液-脱水防锈油-电火花机油-抗磨液压油-深圳市雨辰宏业科技发展有限公司 | 德国EA可编程直流电源_电子负载,中国台湾固纬直流电源_交流电源-苏州展文电子科技有限公司 | 软膜天花_软膜灯箱_首选乐创品牌_一站式天花软膜材料供应商! | RFID电子标签厂家-上海尼太普电子有限公司 |