DB2 Viper 新架構支援表格與階層資料結構。前文已介紹建立資料庫物件、載入 XML 資料及使用 SQL/XML 操作。本文聚焦 DB2 對 XQuery 的原生支援。
DB2 將 XQuery 視為第一類語言,允許直接撰寫 XQuery 運算式,無須包裝在 SQL 中。查詢引擎原生處理 XQuery,解析、優化皆不需轉譯為 SQL。當然,混合 SQL/XQuery 的「雙語查詢」也能被優化處理。
| 特性 | XQuery | SQL |
|---|---|---|
| 資料模型 | 階層結構,有順序 | 扁平表格,基於集合,無順序 |
| 導航 | 支援路徑運算式 | 純 SQL 不支援 |
| 型別系統 | 支援有型別與無型別 | 資料皆有明確型別定義 |
| 空值 | 無 NULL(XML 忽略缺失資料) | 使用 NULL 表示缺失/未知 |
| 回傳結果 | XML 資料序列 | 各型別結果集 |
更多差異請參閱即將出版的 IBM Systems Journal。
本文查詢參考 DB2 Viper 快速入門 (developerWorks, 2006/04) 建立的樣本表:
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 範例。後續查詢將引用這兩份文件中的元素。

圖 1. items 表 comments 欄位 XML 範例

圖 2. clients 表 contactinfo 欄位 XML 範例