久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

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

Oracle XQuery查詢、構建和轉換XML

瀏覽:190日期:2023-11-21 11:59:59
在 Oracle 數據庫 10g 第 2 版中,Oracle 引入了一個與該數據庫集成的全功能自帶 XQuery 引擎,該引擎可用于完成與開發支持 XML 的應用程序相關的各種任務。XQuery 是一種用于處理 XML 數據模型的查詢語言,它實際上可操作任何類型的可用 XML 表達的數據。盡管 Oracle XQuery 實施使您可以使用數據庫數據和外部數據源,但在處理數據庫中存儲的結構化數據方面,Oracle XML DB 通常可以顯著提高性能。 本文提供的示例不僅演示了在什么場合下以及如何使用 XQuery 查詢、構建和轉換 XML,而且還演示了如何監控和分析 XQuery 表達式的性能執行,從而找到更高效的方法來處理同一工作負載。 基于關系數據構建 XML在需要的情況下(例如,向 Web 服務發送結果),您可能要基于關系數據構建 XML。要在 Oracle 數據庫 10g 第 2 版之前的版本中完成此任務,通常需要使用 SQL/XML 生成函數,如 XMLElement、XMLForest 和 XMLAgg()。在 Oracle 數據庫 10 g 第 2 版中,XQuery 將比這些函數更為高效。具體而言,在 XQuery 表達式內部使用 ora:view XQuery 函數,您可以查詢現有的關系表或視圖以及即時構建 XML,從而不必通過關系數據顯式創建 XML 視圖。列表 1 中的 PL/SQL 代碼演示了如何使用 ora:view 基于示例數據庫模式 HR 的默認員工關系表中存儲的數據構建 XML 文檔。 列表 1:使用 ora:view 基于關系數據創建 XMLBEGINIF(DBMS_XDB.CREATEFOLDER('/public/employees')) THENDBMS_OUTPUT.PUT_LINE('Folder is created');ELSEDBMS_OUTPUT.PUT_LINE('Cannot create folder');END IF;COMMIT;END;/DECLAREXMLdoc XMLType;BEGINSELECT XMLQuery('for $j in 1return ( {for $i in ora:view('HR', 'employees')/ROWwhere $i/EMPLOYEE_ID <= 102return ({xs:string($i/EMPLOYEE_ID)}{xs:string($i/LAST_NAME)}{xs:integer($i/SALARY)} )} )'RETURNING CONTENT) INTO XMLdoc FROM DUAL;IF(DBMS_XDB.CREATERESOURCE('/public/employees/employees.xml', XMLdoc)) THENDBMS_OUTPUT.PUT_LINE('Resource is created');ELSEDBMS_OUTPUT.PUT_LINE('Cannot create resource');END IF;COMMIT;END;/在列表 1 中的第一個 PL/SQL 過程中,您只是在 XML 信息庫中創建了一個新文件夾。在該信息庫文件夾中,您隨后將存儲此處顯示的第二個 PL/SQL 過程中創建的 XML 文檔。第二個 PL/SQL 過程首先發出 SELECT 語句,該語句使用 XMLQuery SQL 函數基于關系數據構建 XML。對于 XQuery 表達式(XMLQuery 在此處將其用作參數)而言,請注重嵌套的 FLWOR 表達街惺褂玫?ora:view XQuery 函數。在該示例中,ora:view 獲取兩個輸入參數,即“HR”和“employees”,它們指示該函數查詢屬于 HR 數據庫模式的員工表。因此,ora:view 將返回一個表示 HR.employees 表行的員工 XML 文檔序列。但為了節省結果文檔中的空間,只將前三個員工記錄傳遞給結果序列。這是通過在 FLWOR 表達式的 where 子句中指定 $i/EMPLOYEE_ID <= 102 而實現的。請注重 FLWOR 表達式的 return 子句中使用的 xs:string() 和 xs:integer() XQuery 類型表達式。實際上,此處使用的這兩個 XQuery 表達式不僅將 XML 節點值轉換為相應的類型,而且還將提取這些節點值。隨后,生成的員工 XML 文檔作為 employees.xml 保存到之前在列表 1 中另一個 PL/SQL 過程中創建的 /public/employees XML 信息庫文件夾。要確保此操作已完成,可執行以下查詢:SELECT XMLQuery('for $i in fn:doc('/public/employees/employees.xml')return;$i'RETURNING CONTENT) AS RESULT FROM DUAL;該查詢應生成以下輸出:100King24000101Kochhar17000102De Haan17000在以上 XQuery 中,fn:doc XQuery 函數用于訪問 Oracle XML DB 信息庫中存儲的單個 XML 文檔。但假如要處理一些具有相同或相似結構的 XML 文檔(存儲在同一 XML 信息庫文件夾中),應該怎么做?這種情況下,另一個用于處理 XML 信息庫資源的 XQuery 函數(即 fn:collection)可能會派上用場。本文稍后將介紹幾個有關如何使用 fn:collection XQuery 函數的示例。 查詢 XMLType 數據XQuery 使您可以操作基于 XML 模式以及非基于模式的數據。以下示例演示了如何使用 XMLTable 函數從 OE 演示數據庫模式中查詢基于 PurchaseOrder XML 模式的 XMLType 表。 SELECT ttab.COLUMN_VALUE AS OrderTotal FROM purchaseorder,XMLTable('for $i in /PurchaseOrderwhere $i/User = 'EABEL'return;{$i/Reference}{fn:sum(for $j in $i/LineItems/LineItem/Partreturn ($j/@Quantity*$j/@UnitPrice))}'PASSING OBJECT_VALUE) ttab;在以上示例中,您在 XMLTable 函數的 PASSING 子句中使用 OBJECT_VALUE 虛擬列將 purchaseorder 表作為上下文項傳遞給此處使用的 XQuery 表達式。XQuery 表達式計算用戶 EABEL 請求的每個購買訂單的總計,并為處理的每個訂單生成一個 OrderTotal XML 元素。要訪問生成的 XML,請使用 SELECT 列表中的 COLUMN_VALUE 虛擬列。最終的輸出應如下所示:ORDERTOTAL-------------------------------------------------------------EABEL-20021009123338324PDT1328.05EABEL-20021009123335791PDT2067.15EABEL-20021009123336251PDT289.6EABEL-20021009123336382PDT928.92要獲得相同的最終結果,可以改用 XMLQuery 函數。但假如將上一個示例中使用的 XQuery 表達式參數傳遞給 XMLQuery(如下所示):SELECT XMLQuery('for $i in /PurchaseOrderwhere $i/User eq 'EABEL'return;{$i/Reference}{fn:sum(for $j in $i/LineItems/LineItem/Partreturn ($j/@Quantity*$j/@UnitPrice))}'PASSING OBJECT_VALUERETURNING CONTENT)FROM purchaseorder;則 XQuery 表達式返回的空序列將與 purchaseorder 表聯接,從而包含在查詢總結果集中。實際上,這意味著輸出將不僅包含為用戶 EABEL 請求的訂單生成的 OrderTotal 元素,而且還包含為 purchaseorder 表中存儲的所有其他訂單生成的空行(默認情況下,purchaseorder 表包含 132 行)。從結果集中排除空行的方法之一是在 SELECT 語句的 WHERE 子句中使用 existsNode SQL 函數,而不是在 XQuery 表達式中使用 WHERE 子句,如下所示: SELECT XMLQuery('for $i in /PurchaseOrderreturn;{$i/Reference}{fn:sum(for $j in $i/LineItems/LineItem/Partreturn ($j/@Quantity*$j/@UnitPrice))}'PASSING OBJECT_VALUERETURNING CONTENT) AS ordertotalFROM purchaseorderWHERE existsNode(OBJECT_VALUE, '/PurchaseOrder[User = 'EABEL']') = 1;以上查詢與本部分開頭的 XMLTable 示例生成相同的輸出。 查詢 Oracle XML DB 信息庫中的 XML 數據為訪問 Oracle XML DB 信息庫中存儲的 XML 數據,Oracle XQuery 引入了 fn:doc 和 fn:collection XQuery 函數。使用 fn:doc,您可以查詢 XML 信息庫中存儲的單個 XML 文檔,而 fn:collection 使您可以訪問同一信息庫文件夾中存儲的多個 XML 文檔。 正如本文之前(參閱使用關系數據構建 XML部分)介紹的示例所演示,使用 fn:doc 非常簡單直接。它獲取表示信息庫文件資源 (URI) 的字符串并返回該 URI 指向的文檔。要了解 fn:collection XQuery 函數的作用,同一文件夾中至少應有兩個信息庫文件。假如已經運行了列表 1 中的代碼,則已經創建了 /public/employees 信息庫文件夾并在其中存儲了 employees.xml 文件。因此,您將需要在該文件夾中至少再創建一個 XML 文件,然后才能試用 fn:collection。列表 2 中的 PL/SQL 代碼基于 SCOTT/TIGER 演示數據庫模式的 dept 和 emp 表存儲的關系數據構建 XML,然后將生成的 XML 文檔作為 acc_dept.xml 保存到 /public/employees 信息庫文件夾。要運行列表 2 中的 PL/SQL 過程,請確保以 SCOTT/TIGER 的身份登錄。 列表 2:基于關系數據構建 XML 并將其保存到 XML 信息庫 DECLAREXMLdoc XMLType;BEGINSELECT XMLQuery('for $j in ora:view('SCOTT', 'dept')/ROWwhere $j/DEPTNO = 10return ( {$j/DEPTNO,$j/DNAME} {for $i in ora:view('SCOTT', 'emp')/ROWwhere $i/DEPTNO = $j/DEPTNOreturn ({$i/EMPNO,$i/ENAME,$i/SAL})} )'RETURNING CONTENT) INTO XMLdoc FROM DUAL;IF(DBMS_XDB.CREATERESOURCE('/public/employees/acc_dept.xml', XMLdoc)) THENDBMS_OUTPUT.PUT_LINE('Resource is created');ELSEDBMS_OUTPUT.PUT_LINE('Cannot create resource');END IF;COMMIT;END;/此時,/public/employees 信息庫文件夾應包含兩個文件:acc_dept.xml(由列表 2 中的 PL/SQL 代碼生成)和 employees.xml 文件(由列表 1 中的代碼生成)。由于這些 XML 文檔存儲在同一信息庫文件夾中,因此可以使用 fn:collection 函數訪問兩個 XML 文檔中存儲的員工信息。然而,盡管這些 XML 文檔均包含員工 XML 元素(這些元素實際上具有相同結構?XML 文檔本身的結構迥然不同。在 employees.xml 中,文檔根元素為 EMPLOYEES,而 acc_dept.xml 將 DEPARTMENT 用作根元素。要解決此問題,可以通過 XQuery 使用 XPath // 構造,從而導航到 XML 文檔中的某個節點,而不必指定該節點的確切路徑。以下示例演示了如何在 XQuery 表達式中使用 XPath // 構造: SELECT XMLQuery('for $i in fn:collection('/public/employees')//EMPLOYEEwhere $i/SAL >= 5000order by $i/ENAMEreturn;$i'RETURNING CONTENT) FROM DUAL;該構造應生成以下輸出: 102De Haan170007839KING5000100King24000101Kochhar17000您可以看到,以上輸出包含從 employees.xml 和 acc_dept.xml 中獲取的員工 XML 元素,這些元素表示薪酬大于或等于 5,000 美元的員工。 將 XML 分解為關系數據假如應用程序處理關系數據而非 XML,而您需要訪問的數據以 XML 格式存儲,則將 XML 分解為關系數據可能會非常有用。繼續進行上一部分的示例,您可以使用 SQL 函數 XMLTable 將員工 XML 元素分解為虛擬表的單個列,如下所示: SELECT emps.empno,emps.ename, emps.sal FROM XMLTable('for $i in fn:collection('/public/employees')//EMPLOYEEwhere $i/SAL >= 5000return;$i'COLUMNS empno NUMBER;;;;PATH '/EMPLOYEE/EMPNO',ename VARCHAR2(30) PATH '/EMPLOYEE/ENAME',salNUMBER;;;;PATH '/EMPLOYEE/SAL') emps;該查詢將生成以下輸出: EMPNO ENAME SAL----- -------------- ----------7839 KING 5000100 King;;;;;24000101 Kochhar;;17000102 De Haan;;17000查詢外部數據源使用 XQuery,可以基于 XML 數據以及可以用 XML 表示的非 XML 數據生成 XML 文檔,無論其位置如何:無論是存儲在數據庫中、置于網站上、即時創建還是存儲在文件系統中。但要注重,Oracle XML DB 為針對數據庫中存儲的數據進行的 XML 操作提供了非常高的性能和可伸縮性。因此,假如您能夠完全控制所處理的數據,則最好將它移動到數據庫中。 正如您從前面的示例中了解到的,在 Oracle XQuery 實施中,doc 和 collection XQuery 函數用于訪問 Oracle XML DB 信息庫中存儲的 XML 文檔。可以通過 XMLTable 和 XMLQuery SQL 函數中的 PASSING 子句動態綁定外部數據源。考慮以下示例。假設您的公司要為那些致力于 XQ 項目的員工支付獎金。因此,財務部發布了 empsbonus.xml 文件,其中包含有資格獲得獎金的員工列表以及該列表中輸入的每個員工的獎金數額。empsbonus.xml 文件可能如下所示: 10012001011000在實際情況中,以上的 XML 文件可能置于網站上(因此可以通過互聯網獲得)、以文件形式存儲在本地文件系統中,或以文件資源形式存儲在 Oracle XML DB 信息庫中。就本示例而言,該文件位于網站上。為簡單起見,可以在目錄(Web 服務器在其中存儲可從 Web 看到的文檔)中創建一個員工文件夾,然后在該文件夾中插入 empsbonus.xml 文件,以便可以通過以下 URL 訪問 empsbonus.xml 文件: http://localhost/employees/empsbonus.xml接下來,假設您需要基于 empsbonus.xml 文檔中存儲的數據創建一個報表。在該報表中,您可能不但要包含列表中顯示的獎金數額以及每個員工的員工 ID,還要包含他/她的全名。因此,可以首先使用以下查詢生成一個新的 XML 文檔(假設您以 HR/HR 的身份連接): SELECT XMLQuery('for $k in 1return ( {for $i in ora:view('employees')/ROW,$j in $emps/EMPLOYEES/EMPLOYEEwhere $i/EMPLOYEE_ID = $j/EMPNOreturn ({xs:string($i/EMPLOYEE_ID)}{xs:string(fn:concat($i/FIRST_NAME, ' ', $i/LAST_NAME))}{xs:integer($j/BONUS)})} )'PASSING xmlparse (document httpuritype('http://localhost/employees/empsbonus.xml').getCLOB()) as 'emps'RETURNING CONTENT).getStringVal() as RESULT FROM DUAL;以上查詢是一個有關如何使用 XQuery 基于 XML 和非 XML 數據(以不同的方式從不同的數據源中檢索)生成 XML 文檔的示例。具體而言,使用 ora:view() 函數訪問 HR 演示模式中的默認 employees 關系表,并使用 PASSING 子句中的 httpuritype() 函數借助于 HTTP 訪問 empsbonus.xml 文檔。然后,在 FLWOR 表達式的 return 子句中構建新的 XML 文檔。最后,將獲得以下 XML 文檔: 100Steven King1200101Neena Kochhar1000解決性能問題正如您從前面的部分中了解到的,XQuery 是一種用于查詢 Oracle 數據庫存儲的 XML 內容的高效方法 - 無論您是處理本地存儲的 XMLType 數據還是查詢基于關系數據構建的 XML 視圖。但根據對數據使用的存儲類型的不同,XQuery 表達式的執行性能可能迥然不同。尤其是,Oracle XML DB 可以優化基于由 ora:view 函數創建的 SQL/XML 視圖而構建的 XQuery 表達式。對于 XMLType 表或列中存儲的 XML 數據,只能對使用結構化(對象-關系)存儲技術存儲的基于 XML 模式的 XMLType 數據進行 XQuery 優化。 所選擇的存儲模型并非是影響 XQuery 表達式執行性能的唯一因素。在某些情況下,XQuery 表達式本身的結構也可能導致性能問題。要監控 XQuery 表達式的性能,可以打印并檢查關聯的 EXPLAIN PLAN。在 SQL*Plus 中,只需設置 AUTOTRACE 系統變量,即可打印 SQL 優化程序使用的執行路徑。但要執行該操作,請確保創建 PLUSTRACE 角色,然后將其授予連接到數據庫所使用的用戶。有關如何執行此操作的信息,請參閱 Oracle 數據庫 10g 第 2 版 (10.2) 文檔中《SQL*Plus 用戶指南和參考》一書中的“調整 SQL*Plus”一章。以下示例演示了如何通過檢查 EXPLAIN PLAN 生成的執行計劃來獲得好處。假設您已經將 PLUSTRACE 角色授予默認用戶 OE,以 OE/OE 的身份登錄并運行以下查詢: SET AUTOTRACE ON EXPLAINSELECT count(*)FROM oe.purchaseorder, XMLTable('for $i in /PurchaseOrder/Userwhere $i = 'CJOHNSON'return $i'PASSING OBJECT_VALUE) ptab;這將生成以下輸出: COUNT(*)---------- 9Execution Plan----------------------------------------------------Plan hash value: 4046110317---------------------------------------------------------------------------------------- Id Operation;Name; Rows; Bytes Cost (%CPU) Time;;---------------------------------------------------------------------------------------- 0 SELECT STATEMENT;;;;1 ; 226; 29; (0); 00:00:01 1 ; SORT AGGREGATE;;;;;1 ; 226; 2 NESTED LOOPS 10782 2379K 29; (0); 00:00:01 * 3 TABLE Access FULL; PURCHASEORDER;;1 ; 226; ;5; (0); 00:00:01 4 COLLECTION ITERATOR P XMLSEQUENCEFROMX;;;;;;;;Predicate Information (identified by operation id):---------------------------------------------------3 - filter(SYS_CHECKACL('ACLOID','OWNERID',xmltype('...您可能對為以上查詢生成的執行計劃并不滿足。尤其是,所處理的行數可能非常大。由于 SQL 調整的主要目標是避免訪問對結果沒有任何影響的行,因此可能要繼續調整查詢以優化性能。對查詢中包含的 XPath 表達式進行重新建模后,可以再次重試它,如下所示: SELECT count(*)FROM oe.purchaseorder, XMLTable('for $i in /PurchaseOrderwhere $i/User = 'CJOHNSON'return $i/User'PASSING OBJECT_VALUE) ptab;這次,輸出應如下所示: COUNT(*)---------- 9Execution Plan---------------------------------------------------Plan hash value: 3411896580---------------------------------------------------------------------------------------- Id Operation;Name; Rows; Bytes Cost (%CPU) Time;;---------------------------------------------------------------------------------------- 0 SELECT STATEMENT;;;;1 29; 7(0); 00:00:01 1 ; SORT AGGREGATE;;;;;1 29; 2 NESTED LOOPS ;;1 29; 7(0); 00:00:01 3 ;FAST DUAL ;;1 ;;;;2(0); 00:00:01 * 4 ;TABLE ACCESS FULL PURCHASEORDER;;1 29; 5(0); 00:00:01 Predicate Information (identified by operation id):---------------------------------------------------4 - filter('PURCHASEORDER'.'SYS_NC00022$'='CJOHNSON' ANDSYS_CHECKACL('ACLOID','OWNERID',xmltype('...您可以看到,以上顯示的查詢生成相同的最終結果,但它們的執行計劃并不相同。查看最后一個示例中的 XQuery 表達式,您可能會注重到它迭代頂層 PurchaseOrder 元素,其中的每個 PurchaseOrder 元素都表示基于 PurchaseOrder XMLType 模式的表中的一行。這意味著實際上重寫 XQuery 表達式,以迭帶基礎對象表(用于存儲分解的 PurchaseOrder 文檔)中的行。與查詢要迭代不表示基礎表中的單個行的 XML 元素相比,該方法的性能更好一些。 但在某些情況下,很難發現 XQuery 表達式的哪個構造將使某些查詢的性能更好。這就是為什么最好在開發階段使用調整工具的原因。 將動態變量綁定到 XQuery 表達式另一種可以顯著提高 XQuery 表達式執行性能的技術是使用綁定動態變量。使用綁定變量(而不是將變量串聯為字符串)可以使 Oracle 重用 SQL 語句,從而減少分析開銷并顯著提高應用程序的性能。可以在 XMLQuery 和 XMLTable SQL 函數中使用 PASSING 子句將動態變量綁定到 XQuery 表達式。該技術使您可以根據客戶端代碼中計算的參數動態生成 XML。列表 3 中的示例演示了如何在從 PHP 腳本執行的 XQuery 查詢中使用綁定變量。 列表 3:使用綁定變量
標簽: Oracle 數據庫
主站蜘蛛池模板: 精品久久久久久久久久久久久久 | 国产精品久久久久久亚洲调教 | 不卡视频一区 | 国产精品久久久久久久免费大片 | 午夜三区 | 亚洲日本欧美 | 日韩一区二区三区在线观看 | 欧美久久精品一级c片 | 日本天天操 | 久久久精品久久久 | 亚洲国产精品人人爽夜夜爽 | 午夜男人视频 | 欧美极品欧美精品欧美视频 | 欧美aⅴ| 黄色国产 | 日韩精品91爱爱 | 国产高清在线精品一区二区三区 | 亚洲精品一区二区三区99 | 中文字幕成人网 | 国产不卡在线 | 欧美一区二区在线视频 | 精品国产一区一区二区三亚瑟 | 国产美女www爽爽爽免费视频 | 日韩视频免费在线播放 | 国产精品久久久av | 亚洲久久一区 | 久久兔费看a级 | 蜜桃免费一区二区三区 | 国产精品乱码一区二区三区 | 国产一级视频 | 日韩和的一区二区 | 久久99精品一区二区三区三区 | 在线中文一区 | 欧美成人精品一区二区男人看 | 欧美第一视频 | 黄色片地址| 毛片在线免费 | 国产日本欧美在线 | 国产精品日韩欧美一区二区 | 成人精品视频在线观看 | 男人天堂亚洲 | 污视频在线免费观看 | 欧美啪| 久久久一区二区三区 | 欧美日韩在线播放 | 毛片在线免费播放 | 夫妻午夜影院 | 成人欧美一区二区三区在线播放 | www日本视频 | 亚洲综合在线播放 | 玖玖视频 | 亚洲精品久久久蜜臀 | 成人精品在线视频 | 中文字幕第一页在线 | 一级电影免费看 | 老司机狠狠爱 | av在线日韩| 成人精品视频免费在线观看 | 精品无码久久久久国产 | 欧美黄视频 | 免费毛片网站 | 日本亚洲最大的色成网站www | 国产探花 | 久久99深爱久久99精品 | 国产成人免费视频网站高清观看视频 | 亚洲精品一区在线观看 | 日韩免费观看视频 | 91综合视频在线观看 | 日韩中文字幕 | 免费黄色特级片 | 亚洲国产福利一区 | 波多野结衣一区二区三区中文字幕 | 精品欧美日韩 | 欧美日韩国产一区二区三区不卡 | 亚洲国产欧美日韩 | 欧美午夜一区二区三区免费大片 | 国产精品高潮呻吟久久av野狼 | 99国产精品久久久久久久 | 国产精品亚洲精品 | 欧美在线一区二区三区 | 久久久精品一区 | 精品在线播放 | 国产黄色精品 | 欧美中文在线 | 久久的爱 | 久久久久在线 | 视频精品一区二区三区 | 99精品电影 | 免费在线成人av | av黄色在线看 | 欧美一区二区大片 | 在线欧美亚洲 | 一区二区三区国产 | 激情综合久久 | 99re6在线视频精品免费 | 狠狠撸在线 | 免费一区二区 | a成人| 欧美成人精品一区二区三区 | www.蜜桃av| 日韩av一区二区三区在线观看 | 在线视频 中文字幕 | 亚洲欧美一区二区三区视频 | 99pao成人国产永久免费视频 | 日韩激情免费 | 亚洲午夜电影在线 | 久久久久综合 | 最新中文字幕 | 狠狠视频| 日本不卡免费新一二三区 | 色人久久 | 97爱爱爱 | 国产成人av在线播放 | 日韩国产精品视频 | 天堂一区二区三区 | 成人在线国产 | 国产一区二区精品丝袜 | 精品免费国产一区二区三区 | 亚洲精品一区二区三区蜜桃久 | 男人的天堂久久精品 | 一区二区三区影视 | 免费成人精品 | 99伊人| 九九在线视频 | 色综合久久天天综合网 | 99精品99| 九九热九九 | 亚洲精品午夜aaa久久久 | 日本不卡免费新一二三区 | 久久久国产精品一区 | 粉嫩av网站 | 精品专区| 欧美激情久久久 | 毛片搜索 | 一级黄色片美国 | 日韩在线不卡 | 91精品久久久久久久91蜜桃 | 日韩av视屏 | 久久精品国产精品青草 | 国产一区二区三区免费观看 | 亚洲精品久久久久久一区二区 | 中文字幕在线观看 | 一本岛在线视频 | 国产午夜久久 | 国产小视频在线观看 | 亚洲美女网站 | 日韩在线欧美 | 成年人视频免费在线看 | 亚洲网站在线观看 | 在线亚洲精品 | 久久久国产精品视频 | 国产伦精品一区二区三区在线 | 天天av网 | 成人在线小视频 | 色精品视频| 夜夜av| 国产欧美日韩精品一区 | 久久综合中文字幕 | 九一视频在线免费观看 | 国产精品久久久久精 | 日本三级在线视频 | 国产在线观看一区 | 亚洲成人三区 | 国产在线中文字幕 | 亚洲精品视频免费 | 国产成人精品亚洲日本在线观看 | 国产精品伦一区二区三级视频 | 巴西性猛交xxxx免费看久久久 | 欧美一二三区 | 欧美一区二区免费 | 国产大学生援交视频在线观看 | 亚洲毛片在线 | 国产精彩视频 | 久久久.com| 青草视频在线免费观看 | 国产丝袜一区 | 国产精品美女久久久久久久久久久 | 国产一级一级特黄女人精品毛片 | 欧美在线视频网 | 久久九精品| 亚洲成人一区二区三区 | 国产精品日韩一区二区 | 久操综合 | 成人欧美一区二区三区在线观看 | 91精品久久久久久 | 狠狠操综合网 | 夜夜撸av| 91.成人天堂一区 | 成人亚洲视频 | 久久久久中文字幕 | 国产97久久 | 96久久久久久 | 日本在线视频观看 | 涩涩片影院 | 亚洲精品福利在线观看 | 国产亚洲精品久久久闺蜜 | 国产一区二区av | 欧美日韩一区二区三区不卡视频 | 精品久久影院 | 91亚洲国产 | 一区二区三区在线 | 中文字幕亚洲一区二区三区 | 日韩欧美一区二区三区久久婷婷 | 国产精品免费视频一区 | 午夜免费视频网站 | 91电影在线观看 | 伊人亚洲| 精品视频在线观看 | 久久91精品国产91久久跳 | 综合伊人 | 国产成人免费视频 | 亚洲永久免费观看 | 91视频在线| 欧美一级免费观看 | 三区影院 | 这里精品 | 国产一级在线观看 | 亚洲国产成人在线 | 国产色| 亚洲成av人影片在线观看 | 国产亚洲一区二区三区在线观看 | 亚洲一区二区精品视频 | 久久国产高清 | 91久久久久久久久 | 国产一区在线视频 | 国产欧美一区二区三区国产幕精品 | 日韩欧洲亚洲 | 精品久久一区二区 | 一二三区在线 | 成人黄色免费 | 欧美精品综合 | 影音先锋亚洲资源 | 国产亚洲成av人片在线观看桃 | www国产一区| 羞羞视频免费看 | 国产精品久久久 | 久久精品国产99国产精品 | 黄色最新网站 | 久久久久久久99精品免费观看 | 久久国产精品99国产 | 99精品欧美一区二区三区综合在线 | 99久久久无码国产精品 | 欧美一区二区三区在线观看视频 | 国产精品视频 | 性色av网 | aaa在线免费观看 | 亚洲精品www久久久 www.蜜桃av | 国产精品久久99 | 精品亚洲一区二区 | 日韩精品1区2区 | 在线成人www免费观看视频 | 桃花久久 | 欧美一级片在线观看 | 一二三区视频 | 国产精品免费一区二区三区四区 | 久久久夜夜夜 | 成人国产精品一级毛片视频 | 爱爱视频网站 | 污色视频在线观看 | 日韩成人高清 | 久久精品一二三四 | 精品久久久久一区二区国产 | 国产人成精品一区二区三 | 免费的日本网站 | 久久精品影片 | av在线一区二区 | 欧美成人一区二区三区片免费 | 性视频一区二区 | 日韩在线中出 | 欧美精品在线一区二区三区 | 精品一区免费 | 亚洲国产精品久久 | 91精品国产综合久久久久久 | 99热这里有 | 精品久久久久久 | 国产极品视频在线观看 | 日韩成年人视频 | 精品99久久久久久 | 一区二区在线免费观看 | 久久亚洲一区二区三区四区 | 免费在线精品视频 | 国产精品久久久久久福利一牛影视 | 亚洲成人中文字幕 | 亚州精品天堂中文字幕 | 久久国产精品一区二区 | a√免费视频 | 天天操夜夜拍 | 天天干天天操 | 欧美国产日韩一区二区 | 亚洲天堂中文字幕 | 在线观看国产日韩欧美 | 久久国产精品一区二区 | 天天射美女 | 1000部羞羞视频在线看视频 | 欧美一级免费看 | 欧美日韩精品一区二区 | 伊人久操| 久久久久久亚洲精品视频 | 日韩色综合 | 三区在线 | 欧美在线网站 | a级在线 | 国产精品中文 | 精品视频一区二区三区在线观看 | 亚洲免费a | 日本 欧美 三级 高清 视频 | 国产精品国产三级国产aⅴ中文 | 久久精品美女 | 免费在线一区二区三区 | 国产日韩av在线 | 成人免费视频网站在线观看 | 国产精品178页 | 国产视频精品一区二区三区 | 亚洲免费在线观看 | 日本一级淫片免费看 | 一区二区三区国产精品 | 日韩欧美在线观看视频 | 可以在线观看的黄色 | 美女视频一区 | 在线观看免费视频91 | 一级h片 | 午夜影院18 | 国产精品美女久久久久久久网站 | www.麻豆视频 | 日韩精品在线观看视频 | 午夜精品导航 | 精品中文字幕一区二区三区 | 中文字幕亚洲一区二区三区 | 午夜私人福利 | 欧美午夜视频 | 亚洲欧美一区二区精品中文字幕 | 欧美激情一区二区三区 | 97精品在线 | 国产中文在线 | 国产成人福利在线 | 嫩草视频免费在线观看 | 亚洲国产成人一区二区精品区 | 日韩精品专区 | 亚洲高清视频一区 | 99亚洲视频 | 久久这里只有精品23 | 久久国产精品系列 | 一区二区国产精品 | 久久成人国产视频 | 久久精品国产99久久久 | 久久精品国产99国产 | 鲁视频| 成人欧美一区二区三区黑人孕妇 | 日日撸 | 国产成人精品亚洲777人妖 | 久久se精品一区精品二区 | h成人在线 | 色综合一区 | 午夜免费小视频 | 欧美激情在线播放 | 国产精品无码永久免费888 | 日韩一片| 国产中文字幕在线观看 | 综合色爱 | av香港经典三级级 在线 | 一级在线毛片 | 成人网址在线观看 | 成人激情在线 | 久久精品久久精品 | 欧美一区2区三区4区公司二百 | 欧美日韩在线一区二区 | 日韩色av | 国产馆一区二区 | 一色视频 | 成人午夜精品久久久久久久3d | 国产精品美女久久久久久免费 | 亚洲 激情 在线 | 国产免费一区二区三区 | 日韩视频在线观看一区 | 欧美不卡视频一区发布 | 国产成人精品免高潮在线观看 | 九色在线观看 | 亚洲免费在线播放 | 国产区福利 | 亚洲国产精品一区二区久久 | 国产精品欧美日韩在线观看 | 日韩超级大片免费看国产国产播放器 | 亚洲视频一区二区三区 | 国产在线一级视频 | 久久久精彩视频 | 爱爱网址 | 仙人掌旅馆在线观看 | 伊人av超碰久久久麻豆 | 国产中文在线 | 精品视频二区 | 在线观看免费黄色片 | 亚洲首页 | 波多野结衣一二三区 | 黄色片视频免费 | 男女免费在线观看 | 91美女在线观看 | 日韩福利 | 免费一区二区 | 精品国产一区二区三区久久影院 | 成人av网站在线 | 91精品国产91久久久久久最新 | 久爱国产| 欧美激情视频一区二区三区 | www.日韩视频 | www.男人天堂 | 人妖 丝袜 另类 亚洲 | 欧美精品在线一区 | 青青草久久爱 | 国产区久久 | 91在线免费视频 | 欧美日韩国产一区二区三区在线观看 | 亚洲国产成人av | 成人高清视频在线观看 | 亚洲国产aⅴ成人精品无吗 一区视频在线 | 精品久久久久久久 | 国产精品久久久久久久久久久久久 | 美国黄色毛片女人性生活片 | 欧美日韩激情在线 | 中文字幕在线视频一区 | 久草免费在线视频 | 91电影在线 | 婷婷成人免费视频 | 国产精品国产三级国产aⅴ入口 | 天天干视频 | 国产精品美女久久久久久久久久久 | 亚洲乱码国产乱码精品精的特点 | 成人三区| 日韩久久精品 | 亚洲热在线视频 | 国产精品美女久久久久久久久久久 | 久久国产一区二区 | 在线亚洲一区二区 | 亚洲免费视频一区二区 | 日韩啊啊啊 | 精品久久久久一区二区国产 | 一色屋精品久久久久久久久久 | 五月婷婷狠狠爱 | 福利视频网站 | 毛片av在线播放 | 日韩三级视频 | 色橹橹欧美在线观看视频高清 | 精品自拍视频 | 曰韩毛片 | 亚洲a在线播放 | 亚洲精品视频在线播放 | 天天爽夜夜春 | 欧美综合国产 | 二区国产 | 精品国产一区一区二区三亚瑟 | 精品一区二区三区免费 | 欧美日韩精品一区 | aaaa大片 | 精品国产区 | 日韩欧美精品一区 | 后人极品翘臀美女在线播放 | 久久久久网站 | 影音先锋亚洲资源 | 国产真实精品久久二三区 | 欧美视频在线免费 | 成人av播放 | 亚洲二区在线视频 | 欧美一级电影免费观看 | 蜜桃一区二区 | 999久久久国产精品 欧美成人h版在线观看 | 午夜视频网 | 亚洲精品成人av | 超碰8| 亚洲精品成人在线 | 特级淫片日本高清视频免费 | 99久久精品免费看国产免费软件 | 久久成人久久爱 | 美日韩精品视频 | 综合久久综合久久 | 亚洲欧美日本在线 | 在线观看91 | 欧美综合在线观看 | 成人在线小视频 | 欧美在线 | 久久久香蕉 | 欧美极品欧美精品欧美视频 | 日韩av在线一区 | 一区二区三区国产 | 国产精品99久久免费观看 | 国产精品成人3p一区二区三区 | 欧美日韩中文字幕在线播放 | 一区二区日韩精品 | 精品免费视频 | 亚洲性人人天天夜夜摸 | 色猫猫国产区一区二在线视频 | 日韩国产一区二区三区 | 亚洲人成网站999久久久综合 | 久久精品超碰 | 九九综合九九 | 国产一区二| 精品伊人| 一区二区三区日韩 | 亚洲精品日韩综合观看成人91 | 国产精品视频 | 国产精品免费在线 | 日日操视频 | 五月婷婷综合激情 | 成人欧美一区二区三区黑人孕妇 | 国产成人在线视频 | 国产第一二区 | 亚洲福利小视频 | 成人午夜精品 | 波多野结衣 一区二区三区 精品精品久久 | 羞羞的视频在线 | 亚洲精品女人久久 | 夜本色| 亚洲综合区 | 成人在线www | 国产精品久久久久久久久久东京 | 国产精品69毛片高清亚洲 | 69免费视频 | 99热欧美 | 一级片在线观看免费 | 在线激情网 | 高清av网站 | 午夜精品久久久久久久久久久久 | 不卡免费视频 | 国产大学生援交视频在线观看 | 一级做a爰性色毛片免费1 | 精品视频久久 | 亚州国产精品 | 一级做a爰片性色毛片2021 | 国产成人综合在线 | 亚洲久久久 | 污视频在线免费观看 | 日韩av手机在线免费观看 | 国产精品久久久久久久久久久久冷 | 色一色视频 | 日本一区二区三区免费观看 | 国产伦精品一区二区三区四区视频 | 国产成人精品久久 | 久久99精品视频 | 日本不卡免费新一二三区 | 欧美日在线 | 青青草久久久 | 亚洲精品一区久久久久久 | 日韩视频在线观看中文字幕 | 男女午夜网站 | 日韩视频在线不卡 | 亚洲精品v | 免费高潮视频95在线观看网站 | 狠狠做深爱婷婷综合一区 | 精品久久久久国产 | 久久视频一区二区 | 综合久久网 | 热re99久久精品国产99热 | 久久久久久99| 色天天综合久久久久综合片 | 国产亚洲精品美女久久久久久久久久 | 仙人掌旅馆在线观看 | 亚洲欧美高清 | 日韩欧美在线一区二区 | 亚洲一区二区三区免费观看 | 亚洲一区二区三区免费在线观看 | 免费av中国| 国产精品一区人伦免视频播放 | 在线99热| 欧美八区 | 三级网站视频 | 日本一区二区成人 | 亚洲伦理一区 | 成av人片在线观看www | 成人久久18免费观看 | www.在线播放| 国产精品久久九九 | www视频在线观看 | 日韩三级电影在线免费观看 | 免费成人av| 成人欧美一区二区三区白人 | 伊人在线 | 日韩看片 | 久久中文网 | 国产精品久久一区二区三区 | 久久不色 | 午夜影院免费观看 | 精品伦理一区二区三区 | 精品国产乱码久久久久久久软件 | 日韩精品www | 91精品国产欧美一区二区成人 | 91精品国产综合久久福利软件 | 99re视频在线 | www.久久久久久久久久久久 | 九九视频这里只有精品 | 亚洲 欧美 日韩在线 | 香蕉视频一级片 | 欧美一区二区三区免费电影 | a级片在线观看 | 国产成人小视频 | 午夜视频 | 一区不卡 | av在线免费观看一区二区 | 免费三级电影网站 | 国产日韩一区二区三区 | 99国产精品久久久久久久 | 精品久久久久久国产 | 伊人激情av一区二区三区 | 精品久久国产 | 亚洲国产精品一区 | 欧美激情小视频 | 狠狠se| 久久精品在线 | 在线观看中文字幕 | 日韩成人在线视频 | 欧美日韩精品一区 | 91久久国产综合久久 | av电影天堂网 | 99久久精品免费 | 成人不卡| 天堂免费在线 | 国产欧美日韩 | 看毛片网站 |