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

首頁 > 開發 > XML > 正文

用 SQL 查詢 DB2 XML 數據(1)

2024-07-21 02:41:22
字體:
來源:轉載
供稿:網友
  DB2® Viper 正處于 beta 階段,它為存儲、治理和查詢 xml 數據提供了新的支持。在本文中,您將學習如何使用 SQL 和 SQL/XML 查詢存儲在 XML 列中的數據。后續的文章將闡述如何使用 DB2 支持的一種新語言 XQuery 來查詢 XML 數據?! ‰m然 DB2 的混合體系結構與之前的版本有很大的不同,但是要利用它的新 XML 功能并不難。假如您已經熟悉 SQL,那么很快就可以將這方面的技能轉化到對存儲在 DB2 中的本地 XML 數據的處理上。通過本文就可以知道如何實現這一點?! B2 Viper(現在處于 beta 階段)中的 XML 特性包括新的存儲治理、新的索引技術以及對查詢語言的支持。在本文中,學習如何使用 SQL 或 帶 XML 擴展的 SQL(SQL/XML)查詢 DB2 XML 列中的數據。接下來的文章將討論 DB2 中新引入的對新興的業界標準 XQuery 的支持,并探索 XQuery 在什么時候最有用?! ∧苍S會感到驚奇,DB2 還支持雙語查詢 —— 即組合了來自 SQL 和 XQuery 的表達式的查詢。至于應該使用哪種語言(或兩種語言結合使用)取決于應用程序的需要,同時也取決于您本身所把握的技能。其實,將兩種查詢語言中的元素組合到一個查詢中并沒有您想像的那么難。這樣做還可以為搜索和集成傳統 SQL 和 XML 數據提供強大的能力?! ample 數據庫  本文中的查詢將訪問在 “DB2 Viper 快速入門”(developerWorks,2006 年 4 月)中創建的 sample 數據庫。這里我們簡短地回顧一下,sample 數據庫中 "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
)
12345678910下一頁   圖 1 顯示了 "items.comments" 列中的示例 XML 數據,圖 2 顯示了 "clients.contactinfo" 列中的示例 XML 數據。隨后的查詢例子將引用其中某個 XML 文檔或這兩個文檔中某些特定的元素。  圖 1. 存儲在 "items" 表 "comments" 列的示例 XML 文檔    圖 2. 存儲在 "clients" 表 "contactinfo" 列中的示例 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" 標簽頁中查看輸出?! D 3. DB2 Command Editor,可以從 DB2 Control Center 啟動    純 SQL 查詢  即使您對 SQL 所知有限,也仍然可以很輕松地查詢 XML 數據。例如,下面的查詢選擇 "clients" 表中的全部內容,包括存儲在 "contactinfo" 列的 XML 信息: 上一頁1234567下一頁   清單 2. 簡單的 SELECT 語句select * from clients  當然也可以編寫更具選擇性的 SQL 查詢,使之包含關系投影和限制操作。下面的查詢檢索所有具有 "Gold" 狀態的客戶的 ID、姓名和聯系方式。請注重,"contactinfo" 列包含 XML 數據,而其他兩列不包含 XML 數據:  清單 3. 帶投影和限制的簡單 SELECT 語句select id, name, contactinfo
from clients
where status = 'Gold'
  正如您所預料,您可以基于這樣的查詢創建視圖,下面的 "goldview" 可以說明這一點:  清單 4. 創建包含 XML 列的視圖create view goldview as
select id, name, contactinfo
from clients
where status = 'Gold'
  不幸的是,很多事情光用 SQL 是無法解決的。通過純 SQL 語句可以檢索整個 XML 文檔(剛才已證實這一點),但是卻不能指定基于 XML 的查詢謂詞,也不能檢索 XML 文檔的某一部分或者 XML 文檔中特定的元素值。換句話說,使用純 SQL 不能對 XML 文檔中的片段進行投影、限制、連接、聚集或排序操作。例如,您不能單獨檢索 Gold 客戶的 email 地址或居住在郵政編碼為 "95116" 的地區的客戶的姓名。為了表達這些類型的查詢,需要使用帶 XML 擴展的 SQL(SQL/XML)、XQuery 或結合使用這兩種查詢語言?! ∠乱还潓⑻接?SQL/XML 的幾個基本特性。在接下來的文章中,我們將學習如何編寫 XQuery 以及如何將 XQuery 與 SQL 結合使用?! QL/XML 查詢  顧名思義,SQL/XML 被設計用來為 SQL 和 XML 兩者之間搭一座橋。它首先是 SQL 標準的一部分,經過演化現在包括將 XQuery 或 XPath 表達式嵌入 SQL 語句的規范。XPath 是用于導航 XML 文檔以便發現元素或屬性的一種語言。XQuery 包括對 XPath 的支持。 上一頁12345678下一頁   請務必注重,XQuery(和 XPath)表達式是大小寫敏感的。例如,引用 XML 元素 "zip" 的 XQuery 并不適用于名為 "ZIP" 或 "Zip" 的 XML 元素。SQL 程序員有時候很難記住大小寫敏感這一點,因為 SQL 查詢語法答應使用 "zip"、"ZIP" 和 "Zip" 來引用同一個列名?! B2 Viper 提供了超過 15 個 SQL/XML 函數,通過這些函數可以搜索 XML 文檔中的特定數據,將傳統數據轉換成 XML,將 XML 數據轉換成關系數據,以及執行其他有用的任務。本文不討論 SQL/XML 的所有方面,而只是談到幾種常見的查詢挑戰,以及一些要害的 SQL/XML 函數如何解決這些挑戰?! 「鶕?XML 元素值 “限制” 結果  SQL 程序員經常編寫根據某種條件限制從 DBMS 返回的行的查詢。例如,清單 3 中的 SQL 查詢限制從 "clients" 表中檢索的行,使之只包括那些具有 "Gold" 狀態的客戶。在這個例子中,客戶的狀態可在 SQL VARCHAR 列中捕捉。但是,假如您想根據某種應用于 XML 列中數據的條件對搜索進行限制,那么應該怎么做呢?SQL/XML 的 XMLExists 函數為完成該任務提供了一種手段?! ⊥ㄟ^ XMLExists 可以在 XML 文檔中找到一個元素,并測試它是否滿足某個特定的條件。假如用在 WHERE 子句中,則 XMLExists 可以限制返回的結果,使之只包括那些包含具有特定 XML 元素值的 XML 文檔的行(換句話說,指定的值等于 "true")?! ∽屛覀兛纯丛缦扰龅降囊粋€查詢問題。假如您想找到居住在具有特定郵政編碼的地區的所有客戶的姓名。您也許還記得,"clients" 表的一個 XML 列中存儲了客戶的地址(包括郵政編碼)。(見 圖 2。)通過使用 XMLExists,可以從 XML 列中搜索目標郵政編碼,并相應地限制返回的結果集。下面的 SQL/XML 查詢返回居住在郵政編碼為 95116 的地區的客戶的姓名: 上一頁123456789下一頁   清單 5. 根據 XML 元素值限制結果select name from clients
where xmlexists('$c/Client/Address[zip="95116"]'
passing clients.contactinfo as "c")
  第一行是一個 SQL 子句,指定僅檢索 "clients" 表 "name" 列中的信息。WHERE 子句調用 XMLExists 函數,指定一個 XPath 表達式,這個表達式使 DB2 找到 "zip" 元素并檢查元素值是否為 95116。"$c/Client/Address" 子句表明 DB2 用于定位 "zip" 元素的 XML 文檔層次結構中的路徑。通過使用可以從節點 "$c"(稍后將會解釋)訪問的數據,DB2 將從 "Client" 元素中找到它的子元素 "Address",以便檢查郵政編碼("zip" 值)。最后一行決定 "$c" 的值:它是 "clients" 表的 "contactinfo" 列。因此,DB2 檢查 "contactinfo" 列中的 XML 數據,從根元素 "Client" 深入到 "Address" 子元素再找到 "zip" 子元素,然后判定客戶是否居住在目標地區。假如客戶住在目標地區,則 XMLExists 函數的返回值為 "true",DB2 將返回與那一行相關的客戶的姓名?! ≡谑褂?XMLExists 查詢謂詞時經常會出現一個錯誤,如 清單 6 所示。  清單 6. 根據 XML 元素值限制結果時采用的不正確語法select name from clients
where xmlexists('$c/Client/Address/zip="95116" '
passing clients.contactinfo as "c")
  雖然這個查詢也可以成功地執行,但是它不能限制結果,使之僅包含居住在郵政編碼為 95116 的地區的客戶。(這是由于標準中規定的語義造成的,而且這并不是 DB2 所特有的。)為了限制結果,使之僅包含居住在郵政編碼為 95116 的地區的客戶,需要使用前面 清單 5 中展示的語法。 上一頁12345678910下一頁   您可能很想知道如何在應用程序中包括限制 XML 數據的查詢。雖然本文不具體討論應用開發話題,但還是提供了一個 簡單的 java 例子,這個例子在一條 SQL/XML 語句中使用一個參數標記位將輸出限制為居住在給定地區的客戶的信息?! ?ldquo;投影” XML 元素值  現在讓我們考慮一種稍微有些不同的情景,假設您想將 XML 值投影到返回的結果集。換句話說,我們要從 XML 文檔中檢索一個或多個元素值。有很多方法可以做這件事。首先我們使用 XMLQuery 函數來檢索一個元素的值,然后使用 XMLTable 函數來檢索多個元素的值,然后將這些映射到一個 SQL 結果集的列?! ∥覀儊砜紤]如何解決之前擺在我們面前的一個問題:如何創建一個列出 Gold 客戶的 email 地址的報告。下面 清單 7 中的查詢調用 XMLQuery 函數來完成這項任務:  清單 7. 檢索符合條件的客戶的 email 信息select xmlquery('$c/Client/email'
passing contactinfo as "c")
from clients
where status = 'Gold'
  第一行指定要返回根元素 "Client" 的 "email" 子元素的值。第二行和第三行表明 DB2 在哪里可以找到該信息 —— 在 "clients" 表的 "contactinfo" 列中。第四行進一步限制查詢,表明您只對 Gold 客戶的 email 地址感愛好。這個查詢將返回一組 XML 元素和值。例如,假如有 500 名 Gold 客戶,每個客戶有一個 email 地址,那么輸出將是一個單列的結果集,一共有 500 行,如 清單 8 所示:  清單 8. 之前查詢的示例輸出1
--------------------------------------------
<email>user5976@anyprovider.com</email>
. . .
<email>someID@yahoo.com</email>  
上一頁234567891011下一頁   假如每個 Gold 客戶有多個 email 地址,那么需要指示 DB2 只返回首要的地址(也就是在客戶的 "contactinfo" 文檔中找到的第一個 email 地址)。為此,可以修改查詢的第一行中的表達式:  清單 9. 檢索每個符合條件的客戶的第一個 email 地址select xmlquery('$c/Client/email[1]'
passing contactinfo as "c")
from clients
where status = 'Gold'
  最后,假如有些 Gold 客戶沒有 email 地址,那么可能要編寫一個查詢從結果集中排除 null 值。為此可以修改之前的查詢,添加另一個謂詞到 WHERE 中,以測試是否缺少 email 信息。您已經熟悉了一個可以幫您實現這一點的 SQL/XML 函數 —— 那就是 XMLExists。清單 10 展示了如何重新編寫之前的查詢,以便過濾掉那些聯系方式(存儲為 XML 文檔)中缺少 email 地址的 Gold 客戶的行:  清單 10. 對于至少有一個 email 地址的客戶,檢索每個符合條件的客戶的第一個 email 地址select xmlquery('$c/Client/email[1]'
passing contactinfo as "c")
from clients
where status = 'Gold'
and xmlexists('$c/Client/email' passing contactinfo as "c")
  現在我們考慮一個稍微不同的情景,假設您要檢索多個 XML 元素值。XMLTable 可以從 XML 列中的數據生成標量輸出,可以為程序員提供 XML 數據的 “關系” 視圖,因此非常有用。與 XMLExists 和 XMLQuery 一樣,XMLTable 函數使 DB2 在 XML 文檔層次結構中定位到感愛好的數據。然而,XMLTable 還包括一些子句,用于將目標 XML 數據映射到 SQL 數據類型的結果集列。 上一頁3456789101112下一頁   考慮以下查詢(清單 11),該查詢投影存儲在 "items" 表中的關系數據和 XML 數據。(關于 "items" 表請查看 圖 1)。評論 ID、客戶 ID 和評語存儲在 "comments" 列中的 XML 文檔中。商品名稱存儲在一個 SQL VARCHAR 列中?! ∏鍐?11. 檢索多個 XML 元素并將每個元素轉換成傳統的 SQL 數據類型select t.Comment#, i.itemname, t.CustomerID, Message from items i,
xmltable('$c/Comments/Comment' passing i.comments as "c"
columns Comment# integer path 'CommentID',
  CustomerID integer path 'CustomerID',
  Message varchar(100) path 'Message') as t
  第一行指定將包含在結果集中的列。查詢中后面的幾行表明,用引號括起來、并且以變量 "t" 為前綴的列是基于 XML 元素值的列。第二行調用 XMLTable 函數指定包含目標數據("i.comments")的 DB2 XML 列和在該列的 XML 文檔中的路徑,通過該路徑可以定位感愛好的元素(在根元素 "Comments" 的子元素 "Comment" 中)。第 3 到 5 行的 "columns" 子句標識出將被映射到第一行指定的 SQL 結果集中的輸出列的特定 XML 元素。這個映射需要指定 XML 元素值將被轉換成的數據類型。在這個例子中,所有 XML 數據被轉換成傳統的 SQL 數據類型。  圖 4 展示了運行該查詢得到的示例結果。可以看到,輸出是一個簡單的 SQL 結果集。注重,列名已經被變成大寫形式 —— 這在 SQL 中是很常見的?! D 4. 使用 XMLTable 函數的查詢的示例輸出    假如需要的話,還可以使用 XMLTable 創建包含 XML 文檔的結果集。例如,以下語句產生類似于上述結果的結果集,不同的是 "Message" 數據被包含在一個 XML 列中,而不是包含在一個 SQL VARCHAR 列中。 上一頁45678910111213下一頁   清單 12. 檢索多個 XML 元素并將它們轉換成傳統的 SQL 或 XML 數據類型select t.Comment#, i.itemname, t.CustomerID, Message from items i,
xmltable('$c/Comments/Comment' passing i.comments as "c"
columns Comment# integer path 'CommentID',
  CustomerID integer path 'CustomerID',
  Message XML by ref path 'Message') as t
  創建 XML 數據的關系視圖  正如您可能想像到的那樣,SQL/XML 函數可用于定義視圖。假如要為 SQL 應用程序的程序員提供本地 XML 數據的關系模型,那么這種功能非凡有用?! ?XML 列中的數據創建關系視圖并不比投影 XML 元素值復雜多少。您只需編寫一個 SQL/XML SELECT 語句,在語句中調用 XMLTable 函數,并以此作為視圖定義的基礎。下面 清單 13 中的例子基于 "items" 表的 XML 列和非 XML 列中的信息創建一個視圖。(這類似于 清單 11 中的查詢。)  清單 13. 基于 XMLTable 的輸出創建視圖create view commentview(itemID, itemname, commentID, message, mustrespond) as
select i.id, i.itemname, t.CommentID, t.Message, t.ResponseRequested from items i,
xmltable('$c/Comments/Comment' passing i.comments as "c"
columns CommentID integer path 'CommentID',
  Message varchar(100) path 'Message',
  ResponseRequested varchar(100) path 'ResponseRequested') as t;
  雖然在 XML 列中的數據上創建關系視圖很輕易,但是用起來要小心。在對那樣的視圖發出查詢時,DB2 不使用 XML 列索引。因此,假如以 ResponseRequested 列為索引,并發出一條將 "mustrespond" 列的結果限制為某個特定值的 SQL 查詢,那么 DB2 將讀取所有的 XML 文檔,并搜索適當的 "ResponseRequested" 值。除非數據量不大,否則這樣做會降低運行時性能。然而,假如在那些視圖上運行的查詢還包含有嚴格限制性的謂詞,且參與索引的項中有傳統的 SQL 類型的項(在這個例子中可以是 "i.id" 或 "i.itemname"),那么可以緩解潛在的運行時性能問題。DB2 使用關系索引將符合條件的行過濾到一個較小的量,然后在返回最終結果之前,將更多的 XML 查詢謂詞應用到這些臨時的結果上。 上一頁567891011121314下一頁   連接 XML 數據和關系數據  現在,您可能想知道如何連接 XML 數據和非 XML 數據(例如基于傳統 SQL 類型的關系數據)。DB2 使您可以僅用一條 SQL/XML 語句來做到這一點。有很多方法可用來制定那樣的連接,這取決于數據庫模式和工作負載需求,不過這里我們只談論一個例子。您也許會感到驚奇,其實您已經知道足夠多關于 SQL/XML 的東西,完全可以實現這種連接。  還記得嗎,"items" 表中的 XML 列包含一個 "CustomerID" 元素。這可以作為與 "clients" 表中基于整數的列 "id" 的一個連接鍵。因此,假如要獲得一個報告,其中列出對您的一件或多件產品發表了評論的客戶的姓名和狀態,那么需要將一個表中的 XML 元素值與來自另一個表中的 SQL 整數值相連接。實現這一點的一種方法是使用 XMLExists 函數,如 清單 14 所示:  清單 14. 連接 XML 數據和非 XML 數據select clients.name, clients.status from items, clients
where xmlexists('$c/Comments/Comment[CustomerID=$p]'
passing items.comments as "c", clients.id as "p")
  第一行標識出要包括在查詢結果集中的 SQL 列以及查詢中所引用的源表。第二行包括了連接子句。這里,XMLExists 決定在一個目標源中的 "CustomerID" 值是否等于來自另一個目標源的值。第三行指定這兩個源:第一個目標源是 "items" 表中的 XML 列 "comments",第二個目標源是 "clients" 表中的整數列 "id"。因此,假如客戶對任何產品發表了評論,并且 "clients" 表中存在關于該客戶的信息,那么 XMLExists 表達式將等于 "true",報告中將包括該客戶的姓名和狀態。 上一頁6789101112131415下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品亚洲一区| 亚洲男人天堂网| 亚洲欧美日韩精品久久奇米色影视| 欧美性猛交xxxx偷拍洗澡| 播播国产欧美激情| 国产一区二区三区在线播放免费观看| 茄子视频成人在线| 久久久亚洲国产| 国产精品中文久久久久久久| 中文字幕欧美在线| 日本一区二区在线播放| 久久久久久亚洲精品不卡| 国产精品大片wwwwww| 日韩在线观看免费高清完整版| 在线视频日韩精品| 欧美一级淫片videoshd| 国产成人综合精品在线| 久久成人av网站| 欧美成人黑人xx视频免费观看| www.99久久热国产日韩欧美.com| 亚洲欧洲日产国码av系列天堂| 国产精品视频不卡| 久久久精品影院| 日韩二区三区在线| 亚洲日本aⅴ片在线观看香蕉| 日韩精品中文字幕久久臀| 亚洲专区在线视频| 亚洲国产中文字幕在线观看| 亚洲电影免费在线观看| 亚洲在线观看视频| 91免费精品国偷自产在线| 97视频在线观看免费高清完整版在线观看| 日韩精品高清视频| 亚洲视频一区二区| 欧美一区在线直播| 欧美高清电影在线看| 欧美精品videosex极品1| 久久久免费高清电视剧观看| 国产精品男女猛烈高潮激情| 亚洲电影在线观看| 欧美一级大胆视频| 日韩有码片在线观看| 91精品国产高清久久久久久| 国产精品美女无圣光视频| 91av网站在线播放| 欧美国产激情18| 亚洲国产婷婷香蕉久久久久久| 日韩在线观看免费全集电视剧网站| 国产精品久久久久久超碰| 国产精品美女午夜av| 亚洲性日韩精品一区二区| 欧美精品久久久久久久久久| 午夜精品视频网站| 久久综合电影一区| 97免费视频在线播放| 亚洲精品国产精品乱码不99按摩| 久久免费国产精品1| 欧美日韩美女在线观看| 疯狂欧美牲乱大交777| 亚洲精品成人久久| 日韩精品www| 日韩精品视频免费在线观看| 一区二区三区精品99久久| 国产在线观看一区二区三区| 亚洲天堂免费在线| 国产一区二区三区三区在线观看| 日韩a**站在线观看| 日韩电影在线观看免费| 亚洲美女视频网站| 4438全国亚洲精品在线观看视频| 2019中文字幕免费视频| 日韩精品视频观看| 成人久久久久久| 欧美成人一区在线| 日韩精品在线观看一区二区| 久久久精品一区二区三区| 一区二区三区日韩在线| 国产精品高清网站| 久久精品久久久久久国产 免费| 国产精品成人观看视频国产奇米| 亚洲一区二区三区视频| 亚洲精品福利免费在线观看| 亚洲国产另类 国产精品国产免费| 8090理伦午夜在线电影| 一区二区三区精品99久久| 成人av番号网| 136fldh精品导航福利| 26uuu另类亚洲欧美日本老年| 亚洲黄一区二区| 国产精品a久久久久久| 欧美日韩性视频| 亚洲国产成人久久| 97久久精品人人澡人人爽缅北| 国产亚洲精品久久久| 亚洲成色999久久网站| 久久免费视频这里只有精品| 久久777国产线看观看精品| 国产精品免费久久久| 性欧美视频videos6一9| 国产精品小说在线| 亚洲国产精品视频在线观看| 亚洲性日韩精品一区二区| 美乳少妇欧美精品| 欧美日韩裸体免费视频| 日韩有码在线观看| 国产亚洲一区二区在线| 国产精品视频一区国模私拍| 97人人模人人爽人人喊中文字| 久久久噜噜噜久久| 另类天堂视频在线观看| 久久久久久有精品国产| 久久久亚洲网站| 在线播放国产一区中文字幕剧情欧美| 日韩欧美综合在线视频| 国产精品狼人色视频一区| 亚洲最新av在线| 欧美日韩成人在线观看| 中文国产亚洲喷潮| 日韩精品视频在线观看免费| 久久久视频免费观看| 一个人看的www久久| 亚洲国产精彩中文乱码av在线播放| 国产一区二区三区高清在线观看| xxxxx91麻豆| 成人h视频在线| 日韩电视剧免费观看网站| 亚洲欧美国产精品久久久久久久| 久久久久久久久久久91| 精品爽片免费看久久| 91国在线精品国内播放| 欧美人与性动交a欧美精品| 欧美精品一区三区| 国产丝袜一区二区| 亚洲欧美在线播放| 91精品国产高清久久久久久91| 欧美孕妇毛茸茸xxxx| 久久九九国产精品怡红院| 一区二区亚洲欧洲国产日韩| 97超级碰碰碰| 日韩欧美成人精品| 日韩中文字幕在线视频| 亚洲激情小视频| 久久精品国产一区| 在线不卡国产精品| 韩剧1988在线观看免费完整版| 97精品伊人久久久大香线蕉| 亚洲欧美在线看| 永久免费看mv网站入口亚洲| 国产91精品久久久久久久| 亚洲一区二区中文| 亚洲综合视频1区| 精品久久久中文| 欧美午夜精品久久久久久久| 亚洲大尺度美女在线| 欧美裸体男粗大视频在线观看| 日韩电视剧在线观看免费网站| 久久免费视频这里只有精品| 国产亚洲精品美女久久久久| 午夜精品在线观看| 欧美丰满少妇xxxxx做受| 欧洲日韩成人av| 精品成人乱色一区二区| 久久视频免费在线播放| 国产精品久久精品|