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

首頁 > 數據庫 > DB2 > 正文

使用XQuery查詢DB2 XML數據

2020-01-31 14:52:46
字體:
來源:轉載
供稿:網友
正在看的db2教程是:使用XQuery查詢DB2 XML數據。

關于 XQuery
XQuery 在很多關鍵方面都與 SQL 有所不同,這很大程度上是因為這兩種語言是針對兩種具有不同特征的數據模型而設計的。XML 文檔包含層次結構,并且有其固有的順序。而基于 SQL 的數據庫管理系統所支持的表格數據結構是平面的(flat),并且是基于集合的;因此,行之間不存在順序。

這兩種數據模型的不同導致它們各自的查詢語言有很多基本的不同。例如,XQuery 支持路徑表達式,以允許程序員在 XML 的層次結構中導航,而純 SQL(沒有 XML 擴展)則不支持。XQuery 支持有類型的和無類型的數據,而 SQL 數據總是以指定類型定義的。XQuery 沒有 null 值,因為 XML 文檔會忽略缺失的或未知的數據。當然,SQL 使用 null 來表示缺失的或未知的數據值。XQuery 返回一系列的 XML 數據,而 SQL 則返回各種 SQL 數據類型的結果集。

這只是 XQuery 和 SQL 之間的基本不同點中的一部分。提供一份詳盡的列表超出了本文的范圍,不過即將發表的 IBM Systems Journal 將更詳細地討論這些語言的不同?,F在我們就探索一下 XQuery 語言的一些基本方面,并看看如何使用它來查詢 DB2 Viper 中的 XML 數據。

樣本數據庫

本文中的查詢訪問在 “DB2 Viper 快速入門”(developerWorks,2006 年 4 月)中創建的樣本表。清單 1 給出了樣本數據庫中 “items” 和 “clients” 表的定義:

清單 1. 表定義



create table items (

id int primary key not null,

brandname varchar(30),

itemname varchar(30),

sku int,

srp decimal(7,2),

comments xml

)

create table clients(

id int primary key not null,

name varchar(50),

status varchar(10),

contactinfo xml

)

圖 1 中顯示了 “items.comments” 列中包含的樣本 XML 數據,而 圖 2 中則顯示了 “clients.contactinfo” 列中包含的樣本 XML 數據。隨后的例子查詢將引用這兩個 XML 文檔中的一個或兩個中的特定元素。

圖 1. 存儲在 “items” 表的 “comments” 列中的樣本 XML 文檔

使用XQuery查詢DB2 XML數據(圖一)

圖 2. 存儲在 “clients” 表的 “contactinfo” 列中的樣本 XML 文檔

使用XQuery查詢DB2 XML數據(圖二)

查詢環境

本文中的所有查詢都是通過交互方式發出的。這可以通過 DB2 命令行處理器或 DB2 Control Center 的 DB2 Command Editor 來完成。本文中的屏幕圖像和說明主要使用后一種方式。(DB2 Viper 還附帶了一個基于 Eclipse 的 Developer Workbench,它可以幫助程序員以圖形化的方式構造查詢。本文不討論應用程序開發問題和 Developer Workbench。)

要使用 DB2 Command Editor,啟動 Control Center,并選擇 Tools -> Command Editor。這時將出現如 圖 3 所示的窗口。在上面的面板中輸入查詢,單擊左上角的綠色箭頭運行該查詢,然后可以在下面的面板中或者在 “Query Results” 選項卡中查看輸出。

圖 3. DB2 Command Editor,可以從 DB2 Control Center 中啟動

使用XQuery查詢DB2 XML數據(圖三)

XQuery 例子

與在 “用 SQL 查詢 DB2 XML 數據” 中一樣,本文將逐步講解一些常見的業務場景,并展示如何使用 XQuery 來滿足對 XML 數據的請求。本文還探索了需要將 SQL 嵌入在 XQuery 中的更復雜的情景。

XQuery 提供了一些不同類型的表達式,這些表達式可以隨意組合。每個表達式返回一系列的值,這些值又可以作為其他表達式的輸入。最外面的表達式的結果就是查詢的結果。

本文主要討論兩種重要的 XQuery 表達式:“FLWOR” 表達式和路徑表達式。FLWOR 表達式非常像 SQL 中的 SELECT-FROM-WHERE 表達式 ―― 它用于對由多項組成的一個列表進行迭代,并且可以選擇返回通過在每一項上進行計算得到的值。而路徑表達式則可以在分層的 XML 元素之間進行導航,并返回在路徑末端找到的元素。

與 SQL 中的 SELECT-FROM-WHERE 表達式類似,XQuery FLWOR 表達式可以包含數個以某個關鍵詞開頭的子句。在 FLWOR 表達式中,有以下用于作為子句開頭的關鍵字:

  • for:對輸入序列進行迭代,依次將一個變量綁定到每個輸入項
  • let:聲明一個變量并為之賦值,可能是一個包含多項的列表
  • where:指定過濾查詢結果的標準
  • order by:指定結果的排序順序
  • return:定義所返回的結果
XQuery 中的路徑表達式由一系列的 “步(step)” 組成,之間以斜杠隔開。在最簡單的形式中,每一步在 XML 層次中向下導航,以發現由前一步返回的元素的孩子。路徑表達式中的每一步還可以包含一個謂詞,用于過濾該步返回的元素,只保留滿足某種條件的元素。例如,假設變量 $clients 被綁定到包含 <Client> 元素的 XML 文檔的一個列表,則 4 步路徑表達式 $clients/Client/Address[state = "CA"]/zip 將返回居住在加利福尼亞的客戶的郵政編碼。

在很多情況下,可以任意使用 FLWOR 表達式或路徑表達式編寫查詢。

使用 DB2 XQuery 作為頂層查詢語言

要在 DB2 Viper 中直接執行 XQuery(而不是將它嵌入在 SQL 語句中),必須以關鍵字 xquery 作為查詢的開頭。這個關鍵字將指示 DB2 調用它的 XQuery 解析器來處理請求。注意,只有在使用 XQuery 作為最外層(頂層)語言的時候才需要這么做。如果是將 XQuery 表達式嵌入在 SQL 中,則不需要在語句之前加上 xquery 關鍵字。但是,本文使用 XQuery 作為基本語言,因此所有查詢之前都加上 xquery。

當 XQuery 被作為頂層語言時,它需要一個輸入數據的源。XQuery 獲得輸入數據的一種方式是調用一個名為 db2-fn:xmlcolumn 的函數,調用時帶一個參數,表明 DB2 表中 XML 列所在的表名和該列的列名。db2-fn:xmlcolumn 函數返回存儲在給定列中的一系列的 XML 文檔。例如,下面的查詢返回一系列包含客戶聯系方式信息的 XML 文檔:

清單 2. 返回客戶聯系方式數據的簡單 XQuery



x

[1] [2] [3] [4] [5] 下一篇

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产亚洲a∨片在线观看| 成人在线观看视频网站| 97视频在线观看播放| 欧美国产亚洲精品久久久8v| 日本成人在线视频网址| 亚洲丝袜av一区| 亚洲日本欧美日韩高观看| 日韩三级成人av网| 国产欧美欧洲在线观看| 日韩在线观看免费全| 视频直播国产精品| 欧美在线性爱视频| 国产日韩欧美在线观看| 久久精品国产v日韩v亚洲| 中文字幕免费国产精品| 欧美激情精品久久久久久变态| 亚洲人成免费电影| 国产欧美婷婷中文| 亚洲精品456在线播放狼人| 色噜噜狠狠色综合网图区| 成人性生交xxxxx网站| 国产va免费精品高清在线观看| 日韩国产一区三区| 国产精品99导航| 国产成人亚洲综合青青| 久久久久久久久国产| 欧美精品在线极品| 粗暴蹂躏中文一区二区三区| 久久99精品视频一区97| 久久久久久这里只有精品| 国产日韩欧美在线视频观看| 久久久99久久精品女同性| 久久精品电影网| 日韩欧美aⅴ综合网站发布| 国产一区二区三区免费视频| 欧美大片va欧美在线播放| 亚洲欧美制服丝袜| 日韩av第一页| 国产精品一区二区久久久| 一区二区三区视频免费| 性色av一区二区三区| 久久99国产精品久久久久久久久| 中文字幕久热精品视频在线| 欧美精品videofree1080p| 亚洲电影免费观看高清完整版| 欧美精品久久久久| 亚洲成人久久电影| 2019中文字幕免费视频| 国产日韩在线播放| 亚洲欧美在线一区| 九九热r在线视频精品| 91av中文字幕| 亚洲午夜精品久久久久久久久久久久| 亚洲毛片一区二区| 欧美高清视频在线观看| 不卡在线观看电视剧完整版| 亚洲影院污污.| 欧美午夜女人视频在线| 欧美最猛性xxxx| 亚洲欧美日本另类| 欧洲亚洲女同hd| 欧美日韩在线第一页| 欧美久久精品一级黑人c片| 国产精品欧美激情| 久久九九热免费视频| 欧美电影院免费观看| 国产偷亚洲偷欧美偷精品| 亚洲深夜福利网站| 亚洲美女视频网站| 国产精品丝袜久久久久久高清| 久久精品国产99国产精品澳门| 国产精品久久久久av| 欧美黑人极品猛少妇色xxxxx| 久久久久国产一区二区三区| 中文字幕在线视频日韩| 91精品久久久久久久久久久久久久| 午夜精品蜜臀一区二区三区免费| 亚洲图片在线综合| 日韩精品有码在线观看| 国内精品美女av在线播放| 久久久久日韩精品久久久男男| 亚洲影影院av| 亚洲成年网站在线观看| 亚洲天堂av综合网| 久久精品国产欧美亚洲人人爽| 欧美另类老肥妇| 国产97在线播放| 国内精品免费午夜毛片| 色偷偷888欧美精品久久久| 精品视频在线播放免| 国产精品a久久久久久| 欧美日韩福利视频| 日韩精品视频中文在线观看| 国产精品爽黄69| 亚洲欧美日韩精品久久| 菠萝蜜影院一区二区免费| 亚洲精品免费一区二区三区| 亚洲欧美日韩国产中文| 俺去了亚洲欧美日韩| 久久在线观看视频| 欧美天堂在线观看| 在线成人激情视频| 日韩av电影手机在线| 91免费的视频在线播放| 欧美激情一区二区三区久久久| 欧美制服第一页| 亚洲欧美在线磁力| 亚洲夜晚福利在线观看| 国产一区二区久久精品| 精品中文字幕视频| 日韩精品中文字幕在线观看| 久久中文字幕国产| 91av在线免费观看| 国产成人精品一区二区在线| 日韩欧美aⅴ综合网站发布| 欧美在线视频一区| 欧美麻豆久久久久久中文| 57pao成人国产永久免费| 日韩高清电影好看的电视剧电影| 欧美极品少妇全裸体| 91夜夜未满十八勿入爽爽影院| 亚洲白虎美女被爆操| 在线看片第一页欧美| 国产亚洲精品久久久久久牛牛| 亚洲缚视频在线观看| xxav国产精品美女主播| 欧美在线中文字幕| 亚洲人成自拍网站| 成人午夜小视频| 欧美日韩精品在线播放| 国产一区二区免费| 伊人精品在线观看| 成人精品一区二区三区电影黑人| 韩国v欧美v日本v亚洲| 亚洲第一页在线| 日韩在线观看电影| 狠狠久久亚洲欧美专区| 亚洲成人在线网| 一色桃子一区二区| 7m精品福利视频导航| 亚洲欧美在线免费观看| 欧美日韩性生活视频| 欧美乱人伦中文字幕在线| 性欧美长视频免费观看不卡| 国产xxx69麻豆国语对白| 精品成人国产在线观看男人呻吟| 欧美贵妇videos办公室| 国产精品视频999| 日韩精品视频免费专区在线播放| 91精品啪在线观看麻豆免费| 夜夜躁日日躁狠狠久久88av| 中文字幕视频在线免费欧美日韩综合在线看| 国产91精品视频在线观看| 蜜月aⅴ免费一区二区三区| 精品久久久久久久久久| 性欧美视频videos6一9| 欧美夜福利tv在线| 亚洲综合第一页| 亚洲第一页自拍| 久久躁日日躁aaaaxxxx| 免费av在线一区| 成人a级免费视频| 国产精品久久综合av爱欲tv| 欧美亚洲在线观看|