日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

java xml sql_走进 SQL/XML

發布時間:2024/1/8 asp.net 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java xml sql_走进 SQL/XML 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DBA:XML

走進 SQL/XML

作者:Tim Quinlan

概覽 SQL 與 XML 的互操作性,了解如何著手處理存儲在數據庫中的 XML 文檔。

2006 年 12 月發布

XML 數據通常用于現在的生產系統,是數據庫實現的主要部分。過去,這一事實給數據庫開發人員帶來了設計問題,使得他們必須存儲、查詢和更新諸如非結構化 LOB 的 XML 數據,或者將數據“分解”到關系表中,然后再將其重新組合。該方法導致編程的復雜且低效,因為這些訪問機制是不成熟的。

首次隨 Oracle9i 數據庫第 2 版推出的 Oracle XML DB 特性提供了用于在數據庫中存儲、檢索和操作 XML 數據的新功能。然而, Oracle 10g 第 2 版 XML DB 極大地擴展了該初始方法,其中 XML 數據就像數據庫中的 BLOB 一樣。

本文適用于不了解 Oracle 中 XML 實現的 DBA 或開發人員:其中簡要概述了 SQL 和 XML 互操作性和如何著手處理存儲在 Oracle 10g 第 2 版數據庫中的 XML 文檔,此外,還介紹了 DBA 和開發人員在數據庫中使用 XML 之前應該熟悉的由 Oracle 數據庫 10g 第 2 版提供的大量新特性。使用這些 SQL/XML 特性,可以輕松增強您在使用關系數據時獲取的技能,以便幫助您使用 XML。

什么是 Oracle 的 XML 實現?

Oracle 已經通過數據庫的 XML DB 組件實現了 XML,該組件是企業版和標準版的標準特性。通過數據庫配置助手 (DBCA) 或者運行一個目錄腳本 catqm.sql,可以輕松安裝 Oracle XML DB。XML DB 產品提供本文討論的所有特性。

要驗證是否安裝了 XML DB,只需運行下面的 SQL:

select comp_name from dba_registry where comp_name like '%XML%';

COMP_NAME

Oracle XML Database

也可以查看 XML DB 模式及其對象來確認是否安裝了 Oracle XML DB。

SQL 和 XML 協作

SQL/XML 標準已處在開發之中,以便提供一個允許我們從關系查詢生成 XML 的機制,并反之使我們能夠從 XML 文檔提交 SQL 數據。Oracle 數據庫 10g 第 2 版中的 Oracle XML DB 實現 SQL 2003 和來自即將推出的 SQL/XML 標準版的特性。Oracle 中這些標準的實現使我們能夠以在之前 SQL 標準中不可能的方式查看 XML 文檔。

新數據類型。Oracle9i 數據庫第 1 版中引入了一個新數據類型 XMLType,它允許在 SQL 中訪問數據庫中的 XML 文檔,同時允許 XML 開發人員在文檔中使用 XML 標準。該數據類型通知數據庫該內容是 XML 格式的,并允許我們在 XML 文檔上執行查詢。使用 XMLType(而非一個關系或 CLOB 實現)在應用程序和存儲模型間提供一個分離層。該分離允許數據移到一個不同的存儲模型,而不局限于 CLOB 或關系模型。XMLType 可用于創建表、列或視圖。它還可用作參數和變量的數據類型。

內置的 XML 方法可以處理文檔內容,允許我們創建、提取和索引 XML 數據。索引可以使用 b 樹、文本索引和基于函數的索引執行。實際上,與 XPath 合并的 XMLType 數據可用于查看文檔。該功能通過 PL/SQL 和 Java API 提供。XMLType 可用在 PL/SQL、使用 JDBC 的 Java 以及 Oracle Data Provider for .Net 中。這個功能強大且相對較新的數據類型將在本文中廣泛使用。

存儲結構。Oracle 的 XML 實現為我們提供了以兩種不同方式存儲數據的靈活性:結構化存儲和非結構化存儲。XMLType 數據在存儲為單個 LOB 列時是非結構化的,在實現為對象集時是結構化的。

它的一個特定示例是 XMLType 表,該表可以使用這兩種存儲模型之一實現。XMLType 表在使用如下所示的“XMLType store as CLOB”語法實現為 LOB 時是非結構化的:

create table table_name of XMLtype

XMLType store as CLOB;

讓我們重點看一下 XML 數據的結構化存儲和非結構化存儲并進行更詳細的了解。

結構化存儲。將結構化 XML 存儲實現為一組對象。這些對象可通過具有可以在表間實現的引用約束的表以關系格式實現。它們也可以使用一個 XMLSchema 實現,以便將一個 XMLType 文檔分解為一組對象。

在使用關系表的情況中,可以因此對這些表進行預先設計,或者使用現有表。該文檔實際上通過關系表存儲為“虛擬”文檔,并保留其邏輯結構。該方法可維護文檔對象模型 (DOM) 保真度,但是它不是文檔的逐字節物理表示。這可以通過創建一個關于現有關系數據的 XMLType 視圖來完成。

結構化存儲比非結構化存儲具有一些性能優勢,選擇它可通過表和索引設計提供更多的查詢和更新優化。結構化存儲上的 XML 操作有助于減少內存和存儲,因為沒有存儲 XML 標記,而且存在更細粒度的數據檢索和使用。基于 b 樹和基于函數的索引使用得到了增強,而且使用 XPath 重寫可在文檔的部分上執行適當更新。所有這些都對性能有所幫助,本文稍后將詳細討論。

使用結構化存儲也有一些缺點。插入和檢索整個文檔需要更多開銷。此外,靈活性有限,因為只能存儲匹配 XMLSchema 的文檔 — 但是在某些情況中,這實際上是個優勢。文檔不存儲為逐字節原始表示,而且不保留文檔中的數據順序。但是,這將不會出現數據丟失的情況。

我們通常會將高度結構化的數據看作是 XML,其中數據的每個元素都可以清晰定義。

非結構化存儲。XML 可以使用 CLOB 存儲以非結構化方式存儲在 Oracle 中,以便 SQL 查詢不會知道該數據的結構。該數據可以使用 Oracle 的 XMLType 數據類型存儲。

如果想讓存儲數據匹配文檔的準確物理表示,可以選擇非結構化數據。此外,如果該數據不經常更新,或者整個文檔(而非部分文檔)有大量的插入和讀取,則將數據整體放在一處可能更高效。在某些情況中,您需要保持文檔的靈活性,而且在這些情況中,XMLType 表或列可能是有用的。

非結構化存儲的缺點是,對部分文檔的更新通常不如結構化數據那樣高效。此外,使用函數從 CLOB 構造 DOM 的 XPath 操作將使用大量的系統資源。非結構化數據的其他問題是,SQL 約束無法實現,而且內存管理也不是如此有效。

我們通常不將非結構化數據作為 XML 數據考慮,并將其中大部分或所有數據只看作是單個 CLOB。

了解了這些存儲模型后,現在讓我們來看一些命名特性。

命名空間中有什么?

這是一個大主題,也是需要了解的較復雜的 XML DB 概念之一。在本文中,我們將介紹一些命名空間概念,以便您了解其要旨所在及其用法。

命名空間用于描述 XML 文檔中的一組相關屬性或元素。命名空間可用于確保文檔構造有完全唯一的名稱。XMLSchema 尤其要利用該特性,因為目標命名空間通常與 XMLSchema 的 URI 相同。命名空間示例如下所示。請注意,該命名看起來類似于一個 Internet URL。該命名標準由萬維網聯盟 (W3C) 建議,但并非必需。該 URI 用于唯一標識數據庫中注冊的 XMLSchema 的名稱,而且無需是文檔所處位置的物理 URL。

XMLType 方法和 XML 函數使用命名空間前綴。當 XML 文檔沒有目標命名空間時,該命名空間前綴將位于 noNameSpace 命名空間中。屬性 xsi:noNamespaceSchemaLocation 可用于模式 URI。

如果元素不具備另一個命名空間前綴,默認情況下,在將某個命名空間應用到描述它的元素時,可使用該命名空間。

通常您將看到兩個特定的命名空間。它們是 http://www.w3.org/2001/XMLSchema(完整的 XMLSchema 命名空間)和 http://xmlns.oracle.com/xdb(Oracle 提供的 XML DB 命名空間)。第二個命名空間具有寫入基礎 SQL 函數的函數。一些 XPath 函數也進行重寫。例如 ora:contains、ceiling、floor、not、string-length、substring 和 translate。XML DB 使用的屬性也屬于該命名空間。

定義元素時,我們可以指定該元素的命名空間。在 XML 中,我們可以將它定義為

如您所見,我們提供了一個 elementName,它是我們將使用的元素(例如,“orders”)。Xmlns 是保留字,它告訴我們這是一個命名空間定義。“ab”部分稱為前綴。該前綴是一個綁定到 URL 的簡稱。在本例中,ab 綁定到‘http.name.com’,而且 ab 可以加為元素名的前綴。

下面我們將創建一個非常小的模式,并聲明綁定前綴 xs 到 http://www.w3.org/2001/XMLSchema 以及聲明前綴 xdb 到 http://xmlns.oracle.com/xdb。為了聲明該命名空間,我們使用 xmlns 綁定它們。請注意,xs 前綴在本例中用在模式元素名稱上。

xmlns:xdb= "http://xmlns.oracle.com/xdb" version="1.0">

這里我們只是粗略介紹了一下命名空間。有關該主題的更多信息,請參閱 Oracle 技術網 (OTN) 上的 Oracle XML DB 開發人員指南 10g 第 2 版。

使用 XML

將數據添加到 XMLType 表和列中。正如您可能預期到的,有很多選項可供我們將 XML 數據添加到數據庫中。可以使用 SQL、PL/SQL、Java 和 C 程序插入數據。也可以使用 XMLType 表的 SQL*Loader 和 Import/Export 函數將數據加載到數據庫中。可以使用 Oracle Streams 來移動 XML 數據,還可以使用 DBMS_XDB 函數。現在,就讓我們來探究一個簡單易用的方式來加載 XML 數據。

在本例中,我們將使用 SQL 插入將一個 XML 文檔從文件加載到表中,以便從 bfile 加載該 XML 文檔。該文件需要通過一個數據庫目錄訪問。為此,我們將創建一個目錄以指向存儲該 XML 文檔文件的文件。請注意,要執行本文中的示例,您必須確保所用用戶具有 xdbadmin 角色。

create or replace directory xmldir as '/u01/app/oracle/admin/db01/sql';

現在我們可以用兩種方式創建包含 XMLType 數據的表。第一個將是具有 XMLType 列的表。第二個將是定義為類型 XMLType 的表。

1. 創建一個包含 XML 列的表。

create table invoiceXML_col (

inv_id number primary key,

inv_doc XMLType);

2. 創建一個 XML 表。

create table invoiceXML_tbl of XMLtype;

以上每一個語句都在每個表中隱式創建兩個索引 — 一個用于主鍵,另一個用于 LOB。

現在我們要將一個發票文檔插入到這兩個表中。請注意,我們要使用字符集 AL32UTF8,并指定它傳送字符集編碼來供要讀取的文件使用。數據將插入這兩個表以顯示這兩個 SQL 語句間的相似性。

Insert into invoicexml_col values (1,

XMLType(bfilename('XMLDIR', 'invoicexml.txt'),

nls_charset_id('AL32UTF8') ));

Insert into invoicexml_tbl values

(XMLType(bfilename('XMLDIR', 'invoicexml.txt'),

nls_charset_id('AL32UTF8')));

我們現在已經使用 XMLType 表和列將兩個 XML 文檔加載到了數據庫中。就是這么簡單。

注冊和實現模式類型化數據

如果處理命名空間和存儲技術不足,XMLType 數據也可以實現為模式類型化或非類型化數據。XMLSchema 可將文檔與提供文檔結構和內容信息的 XMLSchema 相關聯。這為文檔提供了更好的記錄、驗證和控制。該模式中的信息可用于提交更有效的查詢和更新處理。XMLSchema 也允許將 XML 文檔存儲為結構化存儲數據,因為該文檔可以通過 XMLSchema 分解為一組對象。用于存儲該文檔的對象模型由模式定義確定。XMLType 方法 schemaValidate() 和 isSchemaValid() 允許使用模式定義編輯 XMLType 文檔。

我們如何創建模式并在 XML 文檔中使用它?為此,我們需要創建一個 XMLSchema 定義

注冊該模式

創建一個基于 XMLSchema 的表

將數據插入其中

下面的示例分四步進行了說明。

1. 首先,在目錄 XML_DIR 下的文件 invoiceformtest.xsd 中創建一個模式定義。該清單如下所示:

xmlns:xdb=http://xmlns.oracle.com/xdb version="1.0">

2. 使用過程 DBMS_XMLSCHEMA.registerSchema 在數據庫中注冊上面的模式。您用來連接到數據庫的用戶名需要修改會話權限,以便該模式可以成功注冊。

BEGIN

DBMS_XMLSCHEMA.registerSchema(

SCHEMAURL => 'http://xmlns.oracle.com/xdb/invoiceformtest.xsd',

SCHEMADOC => bfilename('XMLDIR','invoiceformtest.xsd'),

CSID => nls_charset_id('AL32UTF8'));

END;

/

要刪除該模式,只需運行 DBMS_XMLSCHEMA.deleteSchema 語句,如下所示:

BEGIN

DBMS_XMLSCHEMA.deleteSchema(

SCHEMAURL => 'http://xmlns.oracle.com/xdb/invoiceformtest.xsd',

DELETE_OPTION => dbms_xmlschema.DELETE_CASCADE_FORCE);

END;

/

3. 由于上面模式定義中的 xdb:defaultTable="INVOICEFORMTEST" 語句,以上語句還創建了表 invoiceformtest。沒有它,將創建一個生成的名稱(您不想使用該名稱)。

4. 現在,我們準備將文檔輸入到 XML 文檔內基于 XMLSchema 的表中,該文檔存儲在 XML_DIR 中并使用實現的模式指定的格式。

Insert into invoiceformtest values

(XMLType(bfilename('XMLDIR', 'invoiceformtest.txt'),

nls_charset_id(' AL32UTF8')));

來看一下我們剛剛使用 XML 文檔上的 object_value pseudocolumn 創建的內容。

SQL> select object_value from invoiceformtest;

OBJECT_VALUE

Joe Smith

10 Apple Tree Lane

New York

NY

12345

完成!

了解 XQuery 函數和表達式

XQuery 是 W3C 針對查詢語言開發的一個標準,用于從 XML 文件提取信息。它允許我們訪問物理 XML 文檔或者通過 XML 視圖虛擬化為 XML 文檔的關系數據。使用的表達式可以是簡單的查詢或較大查詢的一部分,而且可以包括標準函數,例如,日期/時間、算術或字符串函數以及用戶定義的函數。XQuery 是 Oracle 數據庫 10g 第 2 版中的新特性,并受 XMLQuery() 和 XMLTable() 函數支持。使用這兩個函數的示例稍后在“XMLQuery() 和 XMLTable()”部分中有述。

XQuery 使用 XPath 表達式(如下所述)定位 XML 文檔中的詳細項。可將其看作是 Oracle 數據庫 10g 第 2 版中引入的 XMLQuery() 和 XMLTable() 函數的基礎,本文稍后有述。

以下將介紹一些更重要的 XQuery 表達式(包括 XPath、XMLSequence 和 FLWOR)。

XPath、XMLSequence 和 FLWOR 表達式

XPath。XPath 提供使用定址技術在 XML 文檔中定位項的方式,而且它通過一個文檔結構使用邏輯路徑處理這些項。它允許程序員在較高的抽象級別處理文檔,方法是通過文檔指定路由而非指向特定元素。XPath 使用節點概念定義路徑在何處開始,然后定義一個“邏輯樹”,該樹包括諸如 attribute、self、parent、child 和 ancestor 等關系。換言之,XPath 會將 XML 文檔建模為節點樹。節點類型分為若干種,例如,元素節點、屬性節點和文本節點。XPath 可以確定一個方式來為每個節點計算字符串值。

憑借 XPath 表達式,您可使用基于標準的方式查詢和更新 XML 文檔。我們將使用 extract、extractValue、existsNode 和 XMLSequence 函數來演示 XPath 功能,期間將用到我們已創建的 invoicexml_tbl 文檔以及插入到其中的數據。

查詢要在 XPath 示例中使用的文檔。讓我們看一下如何使用 XPath 函數通過 SQL 搜索 XML (XMLType) 數據。為此,來看一下要使用 object_value pseudocolumn 從 XMLType 表檢索 XML 文檔時涉及的文檔。

SQL> select object_value from invoicexml_tbl;

OBJECT_VALUE

Joe Smith

10 Apple Tree Lane

New York

NY

12345

Ed Jones

11 Cherry Lane

Newark

NJ

67890

Sept 1, 2006 to Sept 30, 2006

70

30

210

2310

Oct 1, 2006

Ed Jones

使用 extract。使用 extract 時,通過將 extract 與 object_value 合并,可從文檔選擇單個節點及其葉節點。換言之,我們可以查看存儲為 XMLType 的 XML 文檔。無論我們使用的是結構化數據還是非結構化數據以及數據是否基于模式,情況都是如此。開始提取 MailAddressTo 節點及其葉節點。

select extract(object_value, '/Invoice/MailAddressTo') from invoicexml_tbl;

EXTRACT(OBJECT_VALUE,'/INVOICE/MAILADDRESSTO')

Joe Smith10

Apple Tree LaneNew YorkNY

e>12345

如您所見,該輸出包括文檔的 MailAddressTo 部分,不適合打印(格式化)。此外,用于實現它的語法非常簡單。重要的是,我們能夠在無需轉儲整個內容的情況下查看文檔。

使用 extractValue。葉節點中存在的數據值可以使用 extractValue 提取。較高級的節點(例如 MailAddressTo)無法使用該函數提取。請注意,它的輸出不是 XML 語法格式,其中只包含該數據值。

select extractValue(object_value, '/Invoice/MailAddressTo/Person')

Person from invoicexml_tbl;

PERSON

Joe Smith

使用 existsNode。ExistsNode 以類似的方式使用,以便在節點級(只能在節點級)搜索文檔的特定值。它返回一個 True 或 False 標志來指定搜索是否成功。= 1 謂詞不是次數,表示的是 True 條件,而 = 0 表示 False。

Select count(*) from invoicexml_tbl

where existsNode(

object_value, '/Invoice/MailAddressTo[Person="Joe Smith"]') = 1;

COUNT(*)

1

使用 XMLSequence。與 extractValue(只可從單個節點提取的值)不同,XMLSequence 可用于查看文檔的多個節點或某個片段。它通過創建包含 XMLType 對象的虛擬表來完成此操作。讓我們使用 MailAddressTo 分支節點來對 extractValue 和 XMLSequence 進行比較。

select extractValue(object_value, '/Invoice/MailAddressTo') from invoicexml_tbl;

from invoicexml_tbl

*

ERROR at line 2:

ORA-19025: EXTRACTVALUE returns value of only one node

該 ORA-19025 消息具有自我說明性。幸運的是,我們可以通過重構該查詢并使用 XMLSequence 解決該問題,如下所示:

select value(addr)

from invoicexml_tbl i,

table(XMLSequence(

extract(i.object_value, '/Invoice/MailAddressTo'))) addr

where existsNode(i.object_value, '/Invoice/Details[@id="2006Sept1to30PA"]') = 1;

VALUE(ADDR)

Joe Smith10

Apple Tree LaneNew YorkNY

e>12345

由于 XMLSequence 創建一個虛擬表,我們也可以在葉節點上使用該函數。

select value(person)

from invoicexml_tbl i,

table(XMLSequence(

extract(i.object_value, '/Invoice/MailAddressTo/Person'))) person

where existsnode(i.object_value, '/Invoice/Details[@id="2006Sept1to30PA"]') = 1;

VALUE(PERSON)

Joe Smith

FLWOR。FOR、LET、WHERE、ORDER BY 和 RETURN(FLWOR;發音為“flower”)是 XQuery 語法中最重要且最強大的表達式之一。FOR 或 LET 必須存在,WHERE 和 ORDER BY 是可選的,而 RETURN 是必需的。 FLWOR 本身就是一個有待介紹的大主題。本節將為您簡要介紹一下該語句的強大功能。

FOR 通過迭代方式以變量的列出順序綁定一個或多個變量。前面列出的值之后可用在一組后續的值中。這種工作方式也類似于 SQL From 子句。前面列出的值之后可用在一組后續的值中,如下所示:

For $var in (1,2,3) , $varPlus5 in (5+$var, 5+$var, 5+$var)

這三個迭代將 $var 和 $varPlus5 分別設置為 1,6;2,7 和 3,8。

LET(類似于 FOR)以迭代方式綁定變量,可以使用以前計算的值來計算值。與使用 FOR 一樣,可將 LET 看作 SQL FROM 字句。LET 也可以用于執行連接。

WHERE 過濾數據的方式與 SQL WHERE 子句相同。

ORDER BY 可以隨意對數據進行排序。

RETURN 從過濾和排序后的 FLWOR 表達式返回最終結果集。

FLWOR 與 XMLQuery() 協作。以下是查詢和連接兩個文檔的示例:用 Party 鍵將 partys.xml 連接到 orders.xml 文檔。該 XML 數據位于 Oracle XML DB 信息庫中。為此,我們將使用 XMLQuery();FLWOR;以及 XQuery 函數 doc、count、avg 和 integer。它們位于內置 XQuery 函數的命名空間中,http://www.w3.org/2003/11/xpath_functions。

以下查詢讀取結果如下所示:使用函數 fn:doc,對于 (FOR) partys.xml 中的所有 partyno 屬性,連接 (LET) orders.xml 中匹配 partyno 的所有定單元素(變量 $p 綁定在 FOR 語句中)。這將生成一個項流($p 和 $o),其中 $p 表示一方的編號,而 $o 表示該方的一組定單。獲取其中 (WHERE) 有多個定單的項。使用命名空間 fn 中的 XQuery 函數 avg 對平均數 amt 進行降序排序 (ORDER BY)。 Amt 附加到定單元素 $o。返回該方的編號(綁定到 $p)和子元素定單計數。

SELECT XMLQuery()('

for $p in

fn:doc("/public/partys.xml")/partys/party/@partyno

let $o :=

fn:doc("/public/orders.xml")/orders/order[@partyno = $p]

where fn:count($o) > 1

order by fn:avg($o/@amt) descending

return {$p,

{fn:count($o)},

{xs:integer(fn:avg($o/@amt))}}

'

RETURNING CONTENT) ORDERS FROM DUAL;

ORDERS

111123500

是的,該查詢正在進行大量工作并在 XML 文檔上顯示使用 FLWOR 表達式時可能出現的結果。

XQuery ora:函數

Oracle XML DB 提供 五個開發人員 可以使用的 XQuery 函數。它們在 http://xmlns.oracle.com/xdb 命名空間中實現,該命名空間使用前綴 ora:。除此之外還有另外 兩個 XPath 函數。它們仍然不是 SQL/XML 標準的一部分,但預期將來會是。該 ora:view 函數是一個特別有價值的函數,可用于將關系數據轉換為 XML 格式。下面將對所有這些函數進行介紹。

ora:view XQuery 函數。這是在關系表上創建視圖的有用函數。這可以使它們看起來像 XML 文檔。

Syntax: ora:view ([db-schema STRING, ] db_table STRING)

RETURNS document-node (element())

本文稍后將給出使用 ora:view 的示例。

ora:contains XQuery 函數。命名空間前綴“ora:”和名稱“contains”一起使用可創建 XPath 函數,該函數可用作 SQL/XML existsNode、extract 和 extractValue 函數的 XPath 參數。這使您能夠使用文本謂詞執行結構搜索。

如果 text_query 與 input_text 匹配,該函數將返回一個正數。如果它們不匹配,則返回 0。當它們與 existsNode、extract 或 extractValue 一起使用時,您需要包括命名空間映射參數 xmlns:ora="http://xmlns.oracle.com/xdb"。ora:contains 的語法如下所示。當未定義 policy_owner 時,所有者是當前用戶。policy_name 是要應用的匹配規則的名稱。默認的匹配規則由 ctxsys.default_policy_oracontains 定義。

Syntax: ora:contains (

input_text,

text_query [,

policy_name] [,

policy_owner])

下面的示例顯示了如何使用 ora:contains 作為 existsNode 的參數。

SELECT count(*) FROM invoicexml_tbl

WHERE existsNode(object_value, '/Invoice/MailAddressTo/Person

[ora:contains(text(), "Joe Smith") > 0]',

'xmlns:ora="http://xmlns.oracle.com/xdb"') = 1;

COUNT(*)

1

ora:matches XQuery 函數。該函數使用正則表達式匹配文本。這類似于 SQL REGEXP_LIKE 條件,但是它使用 XQuery 參數而非 SQL 數據類型。如果 target_string 匹配正則表達式 match_pattern,則返回 True;否則,返回 False。正如您在下面語法中所見,可以添加 match_parameter 以指定在搜索中使用的附加標準。以下示例是提供區分大小寫。

Syntax: ora:matches (

target_string,

match_pattern [,

match_parameter])

ora:replace XQuery 函數。該函數在滿足 match_pattern 的情況下 (True) 使用 replace_string 替換 target_string,這是對 ora:matches 函數的擴展。與使用 ora:matches 一樣,使用正則表達式來匹配文本。

Syntax: ora:replace (

target_string,

match_pattern,

replace_string [,

match_parameter])

ora:sqrt XQuery 函數。顧名思義,該函數返回提供數字的平方根值。

Syntax: ora:sqrt (number)

XPath 擴展函數:ora:instanceof 和 ora:instanceof-only。當知道屬性和元素的數據類型時,Oracle XML DB 可以支持基于模式的數據。由于 XPath 1.0 不知道數據類型信息,因此在命名空間 http://xmlns.oracle.com/xdb 中有 XML DB 擴展函數,它們使您能夠將 XML 文檔節點限制為特定數據類型。函數 ora:instanceof 可用于將節點限制為數據類型或子類型,而 ora:instanceof-only 只將節點限制為數據類型。子類型是用于擴展或限制類型的特性。

Syntax: ora:instanceof(nodeset-expr, typename [, schema-url])

Syntax: ora:instanceof-only(nodeset-expr, typename [, schema-url])

在上面的語法中,nodeset-expr 通常是一個相關的 XPath 表達式。如果任何節點的數據類型與類型名匹配,則該函數返回 True,否則返回 False。類型名可使用命名空間前綴限定。

對于非基于模式的數據,這些函數將返回 False,因為這些數據沒有與元素和屬性相關的數據類型。

使用 fn:doc 和 fn:collection 函數在 XML DB 信息庫中查詢 XML 數據

有兩個重要的 XQuery 函數可用于在 XML DB 信息庫中查詢所有資源。Fn:doc 是一個 XQuery 函數,可以獲取包含 XML 數據的信息庫文件。該文件資源由其 URL 參數指出。XQuery 變量可以使用 FLWOR 表達式 FOR 和 LET 綁定到數據。XQuery 函數 fn:doc 可用于讀取存儲在 XML DB 信息庫中的單個 XML 文檔。

在信息庫中查詢資源的第二個 XQuery 函數是 fn:collection。該函數可以返回存儲在信息庫中同一文件夾中的大量類似文檔。

現在,我們將通過創建信息庫資源來演示 fn:doc 和 fn:collection 如何處理一些簡單示例。首先,使用 DBMS_XDB PL/SQL 程序包創建一個資源。這可用于在 XML DB 中管理資源。該 createResource 過程在本例中用于創建包含 Orders 和 Partys XML 文檔的新文件資源。

創建用于以下示例的定單和定方資源名。其中有一個名為 ordersnamespace.xml 的附加資源,它是一個使用命名空間的示例。

DECLARE

res BOOLEAN;

ordersxmlstring VARCHAR2(500):=

'<?xml version="1.0"?>

';

partysxmlstring VARCHAR2(500):=

'<?xml version="1.0"?>

';

ordersxmlnsstring VARCHAR2(500):=

'<?xml version="1.0"?>

';

BEGIN

res := DBMS_XDB.createResource('/public/orders.xml', ordersxmlstring);

res := DBMS_XDB.createResource('/public/partys.xml', partysxmlstring);

res := DBMS_XDB.createResource('/public/ordersnamespace.xml', ordersxmlnsstring);

END;

我們可以看到剛剛通過查詢 resource_view 創建的資源,如下所示:

SQL> select any_path, res from resource_view where any_path like '%partys%';

ANY_PATH

RES

/public/partys.xml

2006-06-19T17:12:00.414000

2006-06-19T17:12:00.414000

partys.xml

en-US

WINDOWS-1252

text/xml

1

接下來,使用 fn:doc 顯示單個 partys.xml 文檔。

SELECT XMLQuery('for $p in fn:doc("/public/partys.xml")

return $p'

RETURNING CONTENT) partys FROM DUAL;

PARTYS

---------------------------------------------------------------------

partycity="Toronto"/>

partycity="Chicago"/>

partycity="Montreal"/>

對 Fn:collection 的使用與 fn:doc 稍有不同,它可返回存儲在信息庫中同一文件夾中的所有文檔。從該語句生成的輸出不適合打印,手動進行以下格式化以使該文檔可讀性更高。

SELECT XMLQuery('for $p in fn:collection("/public")

return $p'

RETURNING CONTENT) collection_public FROM DUAL;

COLLECTION_PUBLIC

----------------------------------------------------------------------

還有其他大量 DBMS_XDB 過程和函數可用于管理所有 XML DB 資源,例如,提供刪除資源和創建文件夾的功能。這些函數可在 OTN 上的 Oracle XML DB 開發人員指南 10g 第 2 版 中找到。

XMLQuery() 和 XMLTable()

Oracle 數據庫 10g 第 2 版中引入了 XMLQuery() 和 XMLTable() 函數。它們在 SQL 和 XML 之間提供了強大的接口,允許我們查詢、構造和轉換關系數據,就像它是 XML,反之也可以將 XML 數據當作關系數據來處理。通常,我們使用 XMLQuery() 從關系數據生成 XML 文檔,并使用 XMLTable() 從 XML 數據創建關系視圖。它們仍然不是 ANSI SQL 的一部分,但預計會包括在將來的標準中。

XMLQuery() 函數。該函數用于構造 XML 數據并使用 XQuery 來查詢該數據。它支持在 SQL 上下文中執行 XQuery 表達式。我們也可以通過使用 ora:view 為關系數據創建動態 XML 視圖來查詢關系數據,并能夠操作部分 XML 文檔而非整個文檔。

XMLQuery() 將 XQuery 表達式作為字符串文字,將可選的 XQuery“上下文項”作為 SQL 表達式。該表達式設置將在其中評估 XQuery 表達式的 XPath 上下文。該函數將 XQuery 表達式結果作為 XMLType 實例返回。XMLQuery() 函數也可以將 SQL 表達式作為參數,其中當評估表達式時,值綁定到 XQuery 變量。這些結果作為 XMLType 實例返回。

來看兩個示例,其中我們針對關系數據和 XML 數據使用了 XMLQuery()。

? 將 XMLQuery() 與 ora:view 和 FLWOR 表達式合并的示例。在第一個示例中,我們將在物理關系表上使用 XMLQuery()。XMLQuery() 必須操作 XML 數據,這可通過使用 HR 模式中關系表 Employee 和 Department 上的 ora:view 特性完成。當 ora:view 用在這兩個關系表上之后,它們將顯示為 XML,然后我們就能夠使用 XQuery 表達式,包括嵌套的 FLWOR 表達式。

下面的查詢正在進行以下操作:對于每個部門,獲取部門 id,對于匹配部門 id 且傭金高于 30% 的雇員,返回雇員的名和姓。請注意,FOR 表達式在該查詢中使用了兩次。

SELECT XMLQuery(

'FOR $dep in ora:view("DEPARTMENTS")/ROW

RETURN

{FOR $emp in ora:view("EMPLOYEES")/ROW

WHERE $emp/DEPARTMENT_ID eq $dep/DEPARTMENT_ID

and $emp/COMMISSION_PCT > .3

RETURN ($emp/FIRST_NAME, $emp/LAST_NAME)}

'

RETURNING CONTENT) HIGH_COMMISSION_EMP_NAMES FROM DUAL;

HIGH_COMMISSION_EMP_NAMES

---------------------------------------------------------------

id="20">

id="30">

id="40">

id="50">

id="60">

正如您所見,結果不適合打印。該查詢語法有點復雜,但它顯示出我們能夠使用 ora:view 將關系數據轉換為 XML,并能夠針對 XML 文檔執行連接操作以及將謂詞應用到文檔中的數據上。

? 將 XMLQuery() 與 XMLType 列和 FLWOR 表達式一起使用的示例。表 invoicexml_col(我們在上面創建的,并在其中插入了一個文檔)包含一個 XMLType 列 inv_doc。存儲在該列中的 Invoice 數據是 XML 格式的。在該查詢中,我們使用具有 PASSING 子句的 XMLQuery() 函數將 XMLType 列 inv_doc 傳遞到 XQuery。請注意我們是如何從基于 WHERE 謂詞的 Invoice 文檔返回一些特定字段的。實際上,我們能夠進入 XML 文檔并根據謂詞檢索特定字段,而非只能夠將此文檔作為 CLOB 查看。

下面的 SELECT 語句適用于 invoicexml_col 的所有行。然后我們可以使用 FOR 語句迭代所有發票行。WHERE 謂詞取出 Zipcode 12345 的元素,然后返回 City、State 和 Zipcode,以及是否為 Zipcode 輸入了正確的 City 和 State。 IF…THEN…ELSE 構造將體現該語法的一些附加功能。

Select XMLQuery(

'FOR $i in /Invoice

WHERE $i/MailAddressTo/Zipcode = 12345

RETURN

{IF ($i/MailAddressTo/City = "New York")

THEN "Correct City"

ELSE "Incorrect City"}

{if ($i/MailAddressTo/State = "NY")

then "Correct State" else "Incorrect State"}

'

PASSING inv_doc RETURNING CONTENT) ny_invoice

FROM invoicexml_col;

NY_INVOICE

Correct City

Correct State

這兩個查詢闡釋了我們必須以詳細的分段方式查看和處理 XML 文檔的功能。提供的功能類似于我們用關系數據進行的操作 — 令人驚奇!

XMLTable() 函數。該函數支持將 XML 值解釋為表或集。它用于從 XQuery 表達式的評估返回表和列,而不是像通常那樣返回一個序列作為 XQuery。可以查詢 XMLType 數據并將 XML 結果分割或分解為關系格式 — 可將其看作是創建一個虛擬表。然后,可以使用該虛擬表將數據插入到其他表中,或者查詢該虛擬表。關系視圖也可以針對 XML 數據進行構造。XMLTable() 函數也可用在 SQL From 子句中。

? 將 XMLTable() 與 COLUMNS 子句一起使用的示例。我們將使用前面介紹過 invoicexml_col 表來闡釋如何使用 XMLTable() 將 XML 數據轉換為關系格式。在下面的示例中,XMLTable() 訪問存儲在列 inv_doc 中的 Invoice 文檔。使用 COLUMNS 子句將所需數據元素的路徑映射到新的名稱和格式。 XMLTable() 函數返回數據作為虛擬表,該查詢的結果與我們已經查詢過的關系表一樣。請注意,通過在該查詢底部使用的 WHERE 子句,我們可以過濾 XML 數據,過濾的方式與使用任何為關系數據編寫的 SQL 查詢的方式完全相同。

該查詢和輸出如下所示:

SELECT inv_id, a.PersonName, a.StreetName, a.CityName, a.State, a.Zipcode

FROM invoicexml_col,

XMLTABLE('/Invoice'

PASSING invoicexml_col.inv_doc

COLUMNS

PersonName varchar2(10) PATH '/Invoice/MailAddressTo/Person',

StreetName varchar2(20) PATH '/Invoice/MailAddressTo/Street',

CityName varchar2(10) PATH '/Invoice/MailAddressTo/City',

State varchar2(5) PATH '/Invoice/MailAddressTo/State',

Zipcode varchar2(7) PATH '/Invoice/MailAddressTo/Zipcode'

) a

WHERE a.CityName like 'New%';

INV_ID

PERSONNAME

STREETNAME

CITYNAME

STATE

ZIPCODE

1 Joe Smith 10 Apple Tree Lane New York NY 12345

執行 XML

如文中所述,我們已經可以執行查看 XML 文檔的查詢。下一步是考慮使這些查詢快速執行的方式。可以解釋 XML 查詢并創建索引來幫助提高 XML 數據訪問的性能。特別地,我們能夠以類似過去調整 SQL 的方式改善 XPath 函數的性能。此外,對于 SQL 調整,在某些情況中,重構 XML 查詢也有助于更改和改進訪問路徑。

基于函數的索引可用在結構化和非結構化的 XMLType 表上,無論它們是否基于模式。我們還可能想對諸如 existsNode 的函數利用二進制索引,即根據謂詞評估為 True 或 False 而只返回標志 0 或 1。

在本節中,我們將通過示例來了解一下結構化和非結構化索引通過解釋計劃會對性能產生怎樣的潛在影響。首先,優化 XQuery 表達式,該表達式針對關系表使用 ora:view。

用 XQuery 表達式優化關系數據。以下是一個調整示例,其中使用的是已分析過的類似查詢。該查詢使用 ora:view 訪問關系數據并利用 FLWOR 表達式。連接 HR 模式的關系表 Employees 和 Departments,并針對 commission_pct 大于 3 的所有員工返回部門信息。請注意,屬性名(例如,$emp/ROW/COMMISSION_PCT 中的 JOB)區分大小寫。

在下面的查詢中,FOR 允許我們在 Departments 中迭代行元素 Employees。Employees 行綁定到變量 $emp,而 Departments 行綁定到 $dep。WHERE 執行這兩個表的連接,并選擇 commission_pct 大于 3 的所有員工。RETURN 返回部門信息。

該查詢和解釋計劃如下所示:

explain plan for

SELECT XMLQuery('for $emp in ora:view("EMPLOYEES"), $dep in ora:view("DEPARTMENTS")

where $emp/ROW/DEPARTMENT_ID = $dep/ROW/DEPARTMENT_ID

and $emp/ROW/COMMISSION_PCT > .3

return $dep'

RETURNING CONTENT) AS high_commission_employees

FROM DUAL;

QUERY_PLAN OBJECT_NAME COST BYTES LEVEL

SELECT STATEMENT 2 1

SORT 82 2

HASH JOIN 5 328 3

TABLE ACCESS EMPLOYEES 2 104 4

TABLE ACCESS DEPARTMENTS 2 1512 4

FAST DUAL 2 2

如您所見,優化程序選擇的訪問路徑不使用索引。由于 ora:view 允許我們將關系查詢的結果返回為 XML 元素,因此我們完全可以在關系表上創建 b 樹索引并查看這是否可以提高性能。

Create index emp_idx1 on employees (department_id, commission_pct);

Create index dept_idx1 on departments (department_id);

QUERY_PLAN OBJECT_NAME COST BYTES LEVEL

SELECT STATEMENT 2 1

SORT 82 2

TABLE ACCESS DEPARTMENTS 1 56 3

NESTED LOOPS 2 328 4

INDEX EMP_IDX1 1 104 5

INDEX DEPT_IDX1 0 5

FAST DUAL 2 2

現在,這些索引獲得了使用,成本略有降低。我們使用 ora:view 對 XQuery 的調整非常類似于對標準的非 XML SQL 的調整。對于標準 SQL,重寫該查詢并使用諸如綁定變量(而非硬編碼的字符串值)的特性將有助于提高性能。

優化結構化 XMLType 數據。XPath 重寫可以優化結構化(對象關系)存儲技術。該優化程序可以進行另一個內部性能改進:當以下內容為真時,它可以將基于 XPath 的函數更改為關系語句:

XMLType 數據使用一個注冊的 XMLSchema。這是使用基于模式的數據的另一個優勢。

屬性映射為基礎 SQL(關系)表。

使用了結構化存儲。

這提供了由于性能原因進行查詢重寫的可能性。它也允許使用關系性能調整技術,如上所示。

現在,我們優化針對結構化、非關系 XMLType 數據的查詢。首先看一個非常簡單的示例,它使用早前創建的 invoicexml_tbl 表。

explain plan for

select extract(object_value, '/Invoice/MailAddressTo')

from invoicexml_tbl

where extractValue(object_value, '/Invoice/MailAddressTo/Person')= 'Joe Smith';

The access path is shown below.

QUERY_PLAN OBJECT_NAME COST BYTES LEVEL

SELECT STATEMENT 3 87 1

TABLE ACCESS INVOICEXML_TBL 3 87 2

可以創建該查詢中使用的針對謂詞的基于函數的索引。該索引必須使用與將使用它的查詢完全相同的語法。該索引將創建并多次解釋 SQL 以查看是否使用了新索引。

Create index invoicexml_tbl_idx1 on invoicexml_tbl

(extractValue(object_value, '/Invoice/MailAddressTo/Person'));

QUERY_PLAN OBJECT_NAME COST BYTES LEVEL

SELECT STATEMENT 1 87 1

TABLE ACCESS INVOICEXML_TBL 1 87 2

INDEX INVOICEXML_TBL_IDX1 1 3

使用了新的基于函數的索引后,查詢成本將減少。

優化非結構化 XMLType 數據。

現在我們將執行與非結構化 XMLType 數據相同的測試。表 invtest_unstruct 的創建方式將與我們創建 invoicexml_tbl 的方式完全相同,但我們會添加“XMLType store as CLOB”語法以確保將它定義為非結構化數據。數據定義語言 (DDL)、插入和解釋計劃如下所示:

create table invtest_unstruct of XMLtype

XMLType store as CLOB;

Insert into invtest_unstruct values (

XMLType(bfilename('XMLDIR', 'invoicexml.txt'),

nls_charset_id('WE8MSWIN1252') ));

explain plan for

select extract(object_value, '/Invoice/MailAddressTo')

from invtest_unstruct

where extractValue(object_value, '/Invoice/MailAddressTo/Person')='Joe Smith'

/

QUERY_PLAN OBJECT_NAME COST BYTES LEVEL

SELECT STATEMENT 2 2002 1

TABLE ACCESS INVTEST_UNSTRUCT 2 2002 2

現在,我們將創建一個基于函數的索引,來查看是否將使用它以及是否減少了預期的成本。請注意,“create index”語法與查詢謂詞中使用的語法相同。

Create index invtest_unstruct_idx1 on invtest_unstruct

(extractValue(object_value, '/Invoice/MailAddressTo/Person'));

http://www.oracleimg.com/ocom/groups/public/@otn/documents/digitalasset/126893.gif

QUERY_PLAN OBJECT_NAME COST BYTES LEVEL

SELECT STATEMENT 1 2002 1

TABLE ACCESS INVTEST_UNSTRUCT 1 2002 2

INDEX INVTEST_UNSTRUCT_IDX1 1 3

正如您看到的,相同的索引和查詢可以有效用于結構化和非結構化數據。但需要注意到,結構化數據訪問通常比非結構化訪問更高效。

結論

Oracle 數據庫已經快速發展為將 XML 標準與數據合并在內。Oracle9i 數據庫引入了 XML DB 信息庫和一個新數據類型 XMLType,后者提供 LOB 以及結構化存儲選項。利用 Oracle XML DB 特性,通過將 URI 映射為數據庫對象的層次模型,您能夠在數據庫中執行本機 XML 處理。通過使用節點和路徑概念的“邏輯樹”,可使用 XPath 表達式操作文檔的單個元素。Oracle9i 數據庫中還包括 XMLSchema 支持。

Oracle 數據庫 10g 通過 W3C XML XQuery 語言增強了 XML 支持,該語言包括 XMLQuery() 和 XMLTable() 函數。這些特性的組合簡化了 Oracle 數據庫 10g 第 2 版中關系數據和 XML 數據間的相互轉換使用。正如本文所述,SQL 查詢可以操作 XML 數據,而 XML 查詢現在能夠訪問關系數據。其中的關鍵是 Oracle 對 XMLQuery() 和 XMLTable() 的 SQL/XML 實現。

Oracle 的基于標準的方法也支持流行的協議(例如,FTP、HTTP 和 WebDAV),以便允許常用客戶端工具和應用程序訪問、編輯和發布存儲在數據庫中的 XML 數據。

通過本文,您可輕松增強自己在處理關系數據時獲取的技巧,進而使用這些 SQL/XML 特性來處理 XML。其中重要的一點是,我們能夠通過 Oracle 的索引、解釋和存儲特性來提高 XML 數據訪問的性能。對于設計人員、開發人員和 DBA 來說,及時了解這個快速變化的技術是很關鍵的。

Tim Quinlan [ tquinlan@tlqconsulting.com] 是一名 Oracle 認證的數據庫管理員。他從 1981 年就開始從事數據庫工作,從 Oracle 7 到 Oracle10g 第 2 版均有接觸。擔任過企業級數據倉庫和事務數據庫的 DBA、架構師、設計者和實現者。Tim 在許多會議上發表過演講,教授過數據庫課程,并為很多暢銷的數據庫出版物撰寫過專題文章。他的主要(專業)興趣是設計和實現高性能、高可用性的大型數據庫系統。

總結

以上是生活随笔為你收集整理的java xml sql_走进 SQL/XML的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

天天曰天天曰 | 国产一二区在线观看 | 狠狠色丁香久久婷婷综合丁香 | 午夜黄色影院 | 日韩欧美一区二区三区视频 | 久久久久久久久久影院 | 一级片免费观看视频 | 91自拍91| 国产a网站| av观看免费在线 | 亚洲涩涩涩涩涩涩 | 国产黑丝一区二区三区 | 粉嫩av一区二区三区四区五区 | 免费黄色看片 | 亚洲乱码精品 | 天天插日日操 | 亚洲精品综合一二三区在线观看 | 国产这里只有精品 | 日韩精品一区二区三区中文字幕 | 视频精品一区二区三区 | 亚洲最大免费成人网 | 中文字幕 国产 一区 | 国产精品一区一区三区 | 成人一级 | 女人魂免费观看 | 国产亚洲精品久久久久5区 成人h电影在线观看 | av性在线| 欧美日韩精品免费观看视频 | 国内外成人在线 | 亚洲精品美女免费 | 91探花在线视频 | 天天操天天爽天天干 | 亚洲精品日韩在线观看 | 久久久国产精品视频 | 91免费国产在线观看 | 蜜臀av性久久久久蜜臀aⅴ流畅 | 叶爱av在线 | 欧美色黄 | 麻豆国产露脸在线观看 | 国产精品专区h在线观看 | 韩国视频一区二区三区 | 国产香蕉视频在线观看 | www.天天干 | 伊人伊成久久人综合网站 | 久久久久色 | 手机成人在线电影 | 狠狠狠狠干 | 六月激情网 | 99综合电影在线视频 | 夜夜爽天天爽 | 欧美精品久久久久久久久久久 | 欧美日韩国产一区二区三区在线观看 | 日韩极品视频在线观看 | 亚洲精品三级 | 久久久91精品国产一区二区三区 | 国产高清不卡在线 | 一区二区三区四区免费视频 | 亚洲 欧美 成人 | 久久免费一级片 | 国产美女主播精品一区二区三区 | 亚洲天堂网在线播放 | 国产在线视频不卡 | 精品久久久久_ | 天天躁天天躁天天躁婷 | 黄网av在线 | 日韩91在线 | 亚洲 欧美 91| 天天插综合 | 亚洲国产精品激情在线观看 | 精品久久久久久综合日本 | 亚洲成人欧美 | 国产欧美日韩视频 | 欧美精品一区二区在线观看 | 欧美极品裸体 | 在线观看精品一区 | 婷婷综合久久 | www.狠狠色| 激情视频一区二区三区 | 亚洲一区二区三区精品在线观看 | 久久婷婷久久 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 婷婷丁香国产 | 亚洲一级电影视频 | 在线只有精品 | 激情综合久久 | 久草视频免费观 | 日本中文字幕系列 | 激情婷婷六月 | 九九在线精品视频 | 99热国产在线| 国产伦精品一区二区三区… | 国产精品1区2区3区在线观看 | 最新在线你懂的 | www.伊人网 | 911久久香蕉国产线看观看 | 99视频在线精品免费观看2 | 色综合天天 | 日韩av伦理片 | 五月婷婷天堂 | 一区二区视频免费在线观看 | 九九精品在线观看 | 97超碰人人干 | 久99视频| 久久精品2 | 国产黄在线播放 | 九九热视频在线免费观看 | 91av在线播放视频 | 久久9视频| 一区二区三区日韩视频在线观看 | 亚洲高清在线 | av亚洲产国偷v产偷v自拍小说 | 中文字幕av全部资源www中文字幕在线观看 | 成人在线观看日韩 | 中文字幕国产一区 | 狠狠干夜夜爽 | 国产剧情一区二区 | 啪啪凸凸 | 特级西西444www高清大视频 | 狠狠操欧美 | 久久8精品 | 欧美日韩综合在线 | 91理论片午午伦夜理片久久 | 99久久激情视频 | 婷婷中文字幕综合 | 色婷婷福利 | 在线观看视频精品 | 丁香影院在线 | 国产 中文 日韩 欧美 | 中文字幕亚洲欧美日韩 | 久久久久久久国产精品视频 | 激情五月婷婷丁香 | 国产精品永久久久久久久www | 欧美a级免费视频 | 国产区免费在线 | 香蕉视频在线看 | 国产黄色精品视频 | av色影院| 九色琪琪久久综合网天天 | 国产精品激情在线观看 | 97免费视频在线 | 狠狠狠狠狠狠狠 | 中文字幕不卡在线88 | 丝袜美腿av | 激情网五月 | 午夜国产影院 | 久久亚洲婷婷 | 97精品国产91久久久久久久 | 久久精品一二三区白丝高潮 | 在线观看视频黄色 | 久草免费在线视频观看 | 国产精品久久久久久久久免费 | 欧美日韩一区二区三区视频 | 成人小视频在线免费观看 | 99福利影院 | 激情av网 | 99久久99久久精品免费 | 深爱综合网 | 最近免费中文字幕大全高清10 | 久久成人精品视频 | 午夜12点 | 亚洲资源| 国产美女黄网站免费 | 免费三及片| 欧美日韩国产一区二区在线观看 | www.久久色 | 在线视频精品 | 麻豆mv在线观看 | 欧美日韩综合在线观看 | 成人网在线免费视频 | 综合久久五月天 | 五月天高清欧美mv | 天天摸天天舔天天操 | 在线观看视频中文字幕 | 高清美女视频 | 五月婷婷电影网 | 六月丁香久久 | 超碰97人 | av色影院| 一区二区精品在线视频 | 亚洲欧美乱综合图片区小说区 | 在线观看免费版高清版 | 免费能看的黄色片 | 99视频在线精品 | 91精品区 | 日本精品中文字幕 | 在线亚洲精品 | 韩日精品视频 | 国产精品欧美激情在线观看 | 精品国产午夜 | 黄色一区三区 | 中文字幕在线中文 | 夜夜躁日日躁 | 成人精品视频 | 成人黄色小说视频 | 激情黄色av | 精品久久国产精品 | 香蕉在线视频播放网站 | 久久久久久久久久久免费视频 | 人人精久| 久久精品一二三区白丝高潮 | 五月婷婷在线视频观看 | 色婷婷成人网 | 欧美日韩国产一区二 | 中文字幕高清免费日韩视频在线 | 美女视频黄免费 | 国产精品福利在线观看 | 成人午夜在线观看 | 久久不卡国产精品一区二区 | 欧美日本中文字幕 | 久久久国产精品麻豆 | 一级黄色片在线免费观看 | 国内精品美女在线观看 | 在线成人免费电影 | 黄色a级片在线观看 | www色婷婷com| 日本精品久久久久久 | 黄色大片免费网站 | 久久久久综合 | 色综合久久五月 | 午夜精品久久久99热福利 | 久久理论片 | 黄色片视频在线观看 | 麻豆视频免费入口 | 一区二区三区三区在线 | 久久久久国产精品免费免费搜索 | 午夜影视一区 | 久久国产免费看 | 国产一级精品绿帽视频 | 麻豆久久久久 | 西西444www大胆高清图片 | 精品国产亚洲在线 | 亚洲国产中文字幕在线观看 | 黄色三级免费片 | 日韩精品免费在线播放 | 色婷婷精品大在线视频 | 久久精品国产一区二区三 | 一区二区三区日韩在线 | 99久久婷婷 | 国产在线中文字幕 | 色狠狠综合天天综合综合 | 在线观看免费高清视频大全追剧 | 在线观看激情av | 国产精品一区二区免费看 | 日韩成人免费电影 | 亚洲欧美国产精品久久久久 | 久草网视频 | 中文字幕不卡在线88 | 精品欧美一区二区精品久久 | 成人av高清在线 | 国产高清视频免费观看 | 成人在线播放免费观看 | 免费av视屏 | 色狠狠狠 | 久久精品99久久 | 手机看片99| 99久久99久久精品国产片 | 久久黄色小说视频 | 4438全国亚洲精品观看视频 | 久久精品精品电影网 | 99久久久国产精品免费99 | 久久久首页 | 91一区啪爱嗯打偷拍欧美 | 日韩一区二区三 | 成人免费观看在线视频 | 色综合久久久久久久久五月 | av在线短片| 黄色aa久久 | 一级α片 | 久久久免费看视频 | 日韩在线视频网址 | 91精品久久久久久 | 日日干网址 | 亚洲毛片久久 | 亚洲三级在线播放 | 粉嫩高清一区二区三区 | 久久电影国产免费久久电影 | 在线观看日韩免费视频 | 久久精品1区 | 国产黄色片一级三级 | 亚洲精品麻豆 | www色片| 日韩精品视频在线观看网址 | 国产1区2 | 天天看天天操 | 欧美精品免费在线 | 六月婷婷网 | 成人污视频在线观看 | 欧美一级特黄aaaaaa大片在线观看 | 婷婷亚洲五月色综合 | 看黄色.com| 久久高清免费视频 | 久久精品网站视频 | 日韩视频免费观看高清 | 国内精品久久久 | 九九在线免费视频 | 久久人人射 | 日韩1页 | 在线观看91久久久久久 | 日韩在线不卡av | 日韩动态视频 | japanesexxx乱女另类 | 黄色小视频在线观看免费 | 午夜黄网| 国内视频 | 91av观看| 亚洲免费视频观看 | 免费三级影片 | 中文字幕之中文字幕 | 99精品区| 国产女人40精品一区毛片视频 | 日韩在线精品视频 | 天天爽人人爽夜夜爽 | 日韩影视精品 | 精品视频在线播放 | 中文视频在线 | 在线视频a | 91中文在线观看 | 日韩午夜电影 | 午夜av片| 免费的国产精品 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 欧美在线视频一区二区三区 | 最近中文字幕完整高清 | www黄在线| 丁香影院在线 | 欧美日韩免费观看一区二区三区 | 中文亚洲欧美日韩 | 亚洲砖区区免费 | 天天综合网 天天综合色 | 久久男人影院 | 中文在线资源 | 99久久精品国产一区二区三区 | 日本精品一 | 亚洲欧美国产日韩在线观看 | 亚洲香蕉视频 | 免费a视频 | 日本久久成人 | 在线天堂8√ | 成人精品99| 国产中文 | 天天干亚洲 | 手机av在线不卡 | 91久久精品日日躁夜夜躁国产 | 亚洲精品在线一区二区 | av电影中文字幕在线观看 | 久久国产精品免费看 | 中文字幕中文字幕在线中文字幕三区 | 国产成人久久 | 狂野欧美激情性xxxx | 免费日p视频 | 日韩.com| 国产亚洲精品成人 | 91爱爱网址 | 黄污视频网站大全 | 久久国产高清视频 | 精品96久久久久久中文字幕无 | 欧美性一级观看 | 亚洲国产精品va在线看黑人 | av看片网| 国产一级一片免费播放放a 一区二区三区国产欧美 | 99精品视频免费看 | 国产在线精品一区二区三区 | 97精品欧美91久久久久久 | 国产成人av电影在线 | 色网免费观看 | 激情综合亚洲精品 | 天天干,天天射,天天操,天天摸 | 国产高清无线码2021 | 成人久久久久久久久久 | 99精品视频中文字幕 | 在线观看视频黄 | 亚洲一一在线 | 国产精品福利无圣光在线一区 | a级黄色片视频 | 国内精品久久久久影院一蜜桃 | 最近高清中文在线字幕在线观看 | 丁香花在线视频观看免费 | www.天天草| 国产精品99精品久久免费 | 99久热在线精品视频 | 亚洲天天综合 | 综合色综合色 | 91精品视频一区 | 在线日韩av | 国产91精品看黄网站在线观看动漫 | 黄色一级片视频 | 欧洲亚洲精品 | 超碰免费在线公开 | 一区二区国产精品 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产99区 | 亚洲国产精品一区二区久久,亚洲午夜 | 欧美激情视频免费看 | 婷婷色资源 | av高清在线 | 天天操天天射天天 | 久草视频视频在线播放 | 在线观看的黄色 | 国内精品久久久 | 天堂激情网 | 成人 亚洲 欧美 | 91九色在线视频观看 | 久久不卡av | 丁香综合五月 | 国内精品久久久精品电影院 | 最近日本mv字幕免费观看 | 九9热这里真品2 | 欧美日韩高清 | 久草在线视频首页 | 久久精品这里热有精品 | 国产成视频在线观看 | a天堂一码二码专区 | 天天干夜夜 | 婷婷色在线资源 | 少妇精品久久久一区二区免费 | 人人草人人做 | 一本大道久久精品懂色aⅴ 五月婷社区 | 丁香五月亚洲综合在线 | 日本成人黄色片 | 国产精品欧美 | 成人丁香花 | 久久成年人视频 | 国产 在线观看 | 在线观看91视频 | 日韩最新av | 国产精品女同一区二区三区久久夜 | 日产中文字幕 | 国产字幕在线看 | 国产蜜臀av | 91在线精品播放 | 一区二区成人国产精品 | 亚洲精品中文字幕在线观看 | 国产精品淫 | 国产流白浆高潮在线观看 | 日日夜夜精品视频 | 四虎国产精品免费观看视频优播 | 国产精品福利小视频 | 亚洲日本va中文字幕 | 综合在线观看色 | 玖玖视频国产 | 成人午夜影视 | 日韩高清免费观看 | 玖草在线观看 | 黄色一级免费 | 精品产品国产在线不卡 | 玖玖视频精品 | 干av在线| 久久九九久久精品 | 九色在线 | 久草国产在线观看 | 国产69精品久久久久99 | 免费合欢视频成人app | 国产成人一区二区三区在线观看 | 国产五月色婷婷六月丁香视频 | 国产区免费| 奇人奇案qvod| 中文字幕色婷婷在线视频 | 婷婷狠狠操| 欧美激情h| 一区二区三区视频网站 | 色综合久| 97偷拍视频 | 91麻豆精品国产91久久久无需广告 | 69成人在线| 在线 影视 一区 | 久久精品婷婷 | 亚洲欧美色婷婷 | 国产黄av | 久久综合狠狠狠色97 | 日韩精品一区二区三区不卡 | 玖玖精品在线 | 亚洲永久精品在线 | 欧美亚洲专区 | 美腿丝袜av | 91.麻豆视频| 2019中文字幕网站 | 成全免费观看视频 | 97国产电影 | 色婷婷综合成人av | 亚洲女裸体 | 天堂av网在线 | 亚洲国产综合在线 | 国产综合小视频 | 97在线观看免费高清完整版在线观看 | 国产精品午夜在线观看 | 91视频午夜 | 国产成人精品国内自产拍免费看 | 久久99视频免费观看 | 美女网站在线播放 | 欧美美女激情18p | 天天天天综合 | 99久久这里只有精品 | 黄色一级动作片 | 国产一级视频在线观看 | 综合网色| 成人在线观看av | 日韩毛片在线播放 | 最新极品jizzhd欧美 | 婷婷激情久久 | 国产一区二区三区四区大秀 | 国产高清在线视频 | 欧美一区三区四区 | 日韩精品一区二区三区不卡 | 天天干中文字幕 | 日日插日日干 | 亚洲另类视频 | 国产午夜精品福利视频 | 日韩精品在线看 | 日韩网站中文字幕 | 亚洲精品色视频 | 麻豆网站免费观看 | 国产69久久 | 不卡的av中文字幕 | 一区二区精品在线 | 欧美黄污视频 | 亚洲欧洲精品一区二区 | 亚洲国产精品久久久久久 | 狠狠色丁香婷婷综合橹88 | 日韩免费在线观看视频 | 久久综合网色—综合色88 | 国产成人精品久久亚洲高清不卡 | 日韩在线免费小视频 | 亚洲 综合 国产 精品 | 婷婷精品在线视频 | 久久久久网站 | 亚洲精品久久久久中文字幕m男 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 亚洲四虎在线 | 久久精品视频4 | 国产精品成人一区 | 看片的网址| 区一区二区三在线观看 | 亚洲va欧洲va国产va不卡 | 久草电影免费在线观看 | 国产精品综合av一区二区国产馆 | 91视频xxxx| 在线免费高清一区二区三区 | 国产精品二区三区 | 国产亚洲视频在线观看 | 国产成人一区二区三区电影 | 色综合天天干 | 天天干天天插伊人网 | 久久久综合九色合综国产精品 | 丁香综合激情 | 亚洲第一中文网 | 91免费观看网站 | 91大神精品视频在线观看 | 麻豆久久一区二区 | 天天曰天天曰 | 九九精品在线观看 | 色a资源在线 | 96视频在线| 成人黄色在线播放 | 久久精品久久久久久久 | 91在线小视频 | 免费激情网 | 成人国产精品电影 | 亚洲一区美女视频在线观看免费 | 黄色精品一区二区 | 国产美女在线精品免费观看 | 日韩理论在线播放 | 国产一区免费视频 | 成人久久18免费网站图片 | 中文字幕精品三级久久久 | 99国产精品久久久久老师 | 99r在线精品 | 99久久久久久久 | 九九免费观看全部免费视频 | 国产精品久久一区二区无卡 | 黄色一级在线免费观看 | 国产免费不卡 | 福利视频在线看 | 国产精品视频永久免费播放 | 丁香婷婷激情 | 国产1区2区3区精品美女 | 亚洲成色777777在线观看影院 | 精品国产一区二区三区久久久蜜月 | 国产v亚洲v | 国产精品九九视频 | 国产婷婷视频在线 | 亚洲成a人片在线www | 日韩在线免费看 | 人人超在线公开视频 | 韩日av在线 | 9999精品| 97久久久免费福利网址 | 日日夜夜天天人人 | 在线精品亚洲 | 成人cosplay福利网站 | 国产原创在线 | 国产成人免费av电影 | 成人免费观看视频大全 | 亚洲天天摸日日摸天天欢 | 四虎www.| 亚洲视频播放 | 亚洲区视频在线 | av千婊在线免费观看 | 亚洲欧美视频在线观看 | 麻豆91精品91久久久 | 国产v视频 | 欧美一级激情 | 欧美大片aaa | 欧美精品久久久久性色 | 国产亚洲视频在线免费观看 | 国产91aaa | 欧美夫妻性生活电影 | 日韩在线播放av | 欧美一区二区三区在线观看 | 色av婷婷 | 欧美婷婷综合 | 久久视频一区 | 国产一区二区成人 | 久久不卡日韩美女 | 国产中文自拍 | 国产黄色片在线 | 亚洲日日日 | av免费观看高清 | 国产黄色一级大片 | 成人wwwxxx视频 | 国产成人久久久久 | 国产精品一级视频 | 色婷婷狠狠18 | 91日本在线播放 | 亚洲视频国产 | 日韩欧美一区二区三区在线观看 | 国产中文字幕视频在线 | 国产97碰免费视频 | 91在线观看视频 | 日日操天天操夜夜操 | 91夜夜夜 | 麻豆精品传媒视频 | 免费在线观看一级片 | 精品一区 在线 | 欧美最猛性xxxxx亚洲精品 | 久久久久一区二区三区 | 日韩一级片大全 | 国产黄色片久久久 | 国产成人精品国内自产拍免费看 | 日韩理论在线播放 | 国产女做a爱免费视频 | 亚洲视频免费在线看 | 亚洲少妇影院 | 成人试看120秒 | 激情久久一区二区三区 | 国产精品女同一区二区三区久久夜 | 亚洲精品免费在线观看视频 | 婷婷综合影院 | 不卡av电影在线观看 | 天天色天| 久久久久久国产精品 | 日韩中文字幕第一页 | 国产99久久九九精品免费 | 天天干com | 99色在线视频 | 毛片播放网站 | 国产在线不卡一区 | 久久色视频 | 四虎国产精品成人免费影视 | 六月丁香激情综合色啪小说 | 国产黄色免费在线观看 | 中文字幕色网站 | 麻花传媒mv免费观看 | 午夜精品福利一区二区三区蜜桃 | 国产高h视频 | 国产99久久精品一区二区永久免费 | 国产手机视频在线观看 | 视频一区在线免费观看 | 久久精品99国产精品酒店日本 | 日韩av线观看| 日躁夜躁狠狠躁2001 | 亚洲亚洲精品在线观看 | 久久夜色精品国产欧美一区麻豆 | 中文字幕精品一区 | 99久热在线精品视频 | 国产免费视频在线 | av三区在线 | 欧美日韩高清在线观看 | 亚洲国产精品小视频 | 久久情爱 | 中文字幕亚洲欧美日韩2019 | 九九热精品视频在线观看 | 婷婷丁香五 | 五月天网站在线 | 亚洲国产黄色片 | 精品av网站| 国产成人一区二区三区影院在线 | 国产精品视屏 | 亚洲精品2区 | 精品欧美乱码久久久久久 | 国产成在线观看免费视频 | 久久国产精品视频 | 就要干b | 狠狠狠狠狠操 | 99色| 欧美精品少妇xxxxx喷水 | 超碰97人人爱 | 久草在线免费电影 | 91精品国产综合久久久久久久 | 中文字幕免费不卡视频 | 国产精品一区二区在线看 | 中午字幕在线观看 | 九九九电影免费看 | 免费视频91蜜桃 | 综合久久精品 | 国产美女在线免费观看 | 中国一级片免费看 | 久久久视屏| 日韩一级精品 | 国产精品 久久 | 国产网红在线观看 | 久久久一本精品99久久精品66 | 精品一区二区影视 | 亚洲高清国产视频 | 久久成人精品视频 | 中文字幕大全 | 四虎国产免费 | 中文字幕国产精品 | 国产日韩在线视频 | 欧美激情另类 | 久久久久久久久久久网 | 五月天激情视频在线观看 | 黄色大片日本 | 蜜臀aⅴ国产精品久久久国产 | av福利在线免费观看 | 91精品久久久久久久久久入口 | 成人在线视频一区 | 国产精在线 | 精品欧美小视频在线观看 | 久久综合久久综合九色 | 午夜精品久久久久久久99热影院 | 日韩高清免费无专码区 | av视屏在线播放 | 亚洲天堂网在线视频观看 | 亚洲视频1区2区 | 天天干,天天草 | 国产午夜精品视频 | a v在线视频 | 91中文在线 | 黄色www| 97av免费视频 | 永久黄网站色视频免费观看w | 国产福利专区 | 综合网在线视频 | 久久一本综合 | 国产不卡在线观看视频 | 国产黄色精品网站 | 在线观看日韩一区 | www.玖玖玖| 中文字幕电影高清在线观看 | 久久精品老司机 | 五月婷婷久久丁香 | 久久久免费电影 | 国产精品嫩草影院99网站 | 日韩av电影网站在线观看 | 香蕉一区 | 在线有码中文 | 91网在线| 超碰av在线播放 | 一区二区三区四区五区在线 | 天天色欧美 | 国产成人黄色在线 | 精品国产伦一区二区三区观看体验 | 国产在线观看一 | 成人免费一区二区三区在线观看 | 午夜在线日韩 | www一起操 | 久久久www成人免费毛片麻豆 | 久青草电影 | 在线看成人| 91传媒视频在线观看 | 手机在线看永久av片免费 | 91视频久久久久 | 福利在线看片 | 五月丁色| 九九在线视频免费观看 | 97精品国产97久久久久久春色 | 国产中文字幕网 | 国产精品正在播放 | 国产亚洲一区二区在线观看 | 欧美精品一区二区免费 | 久草综合在线 | 久久久久久综合网天天 | 国产91精品一区二区绿帽 | 极品嫩模被强到高潮呻吟91 | 欧美最新另类人妖 | 日日操日日干 | 少妇性色午夜淫片aaaze | 日韩av中文字幕在线 | 美女网站色在线观看 | 91免费高清在线观看 | 久久激情视频 | 久久网页 | 国产在线精品一区 | 亚洲国产字幕 | 久久五月激情 | 91爱看片 | 国产精品扒开做爽爽的视频 | 欧美一区二区免费在线观看 | 天天综合天天综合 | 99在线视频播放 | 成人av网站在线观看 | 99久久精品国产一区二区成人 | 天天激情天天干 | 97人人视频| 日本精油按摩3 | 九九爱免费视频在线观看 | 精品视频在线免费 | 国产96在线| 久久久久在线视频 | 国内精品视频一区二区三区八戒 | 99精品视频在线观看视频 | 日本精油按摩3 | 91亚洲狠狠婷婷综合久久久 | 99久久精 | 亚洲精品高清视频 | 日韩视频在线不卡 | 国产美女网站视频 | 免费在线观看av网站 | 在线观看一级视频 | 亚洲1区 在线 | 青青看片| 三级av网| 91香蕉久久| 热久在线| 日韩午夜大片 | 久久婷婷亚洲 | 91看片麻豆 | 最近中文字幕视频完整版 | 亚洲综合婷婷 | 国产精品v欧美精品v日韩 | 欧美精品一区在线 | 特级西西www44高清大胆图片 | 黄在线免费看 | 黄色小说网站在线 | 国内精品在线看 | 人人射人人爽 | 久草视频在线资源站 | 日韩精品一区二区三区电影 | 在线99热| 中文字幕在线观看完整版 | 91中文字幕在线观看 | 亚洲少妇xxxx| 不卡国产视频 | 97福利社 | 国产69精品久久久久久久久久 | 久久人人爽人人爽 | 狠狠操夜夜操 | 欧美一区二区三区免费观看 | 日韩国产欧美在线播放 | 午夜12点| 免费看的黄网站软件 | 欧美在线观看视频一区二区 | 日本黄区免费视频观看 | www九九热| 在线成人国产 | 97超碰资源站| 91成人精品一区在线播放 | 亚洲精品一区二区在线观看 | 日韩高清在线不卡 | 久久久久久久久免费视频 | 制服丝袜亚洲 | 久久久久女教师免费一区 | 色偷偷97 | 欧美黑人xxxx猛性大交 | 亚洲黄色在线免费观看 | 超级碰碰免费视频 | 欧美最新另类人妖 | 国产精品一区久久久久 | 中文字幕在线看视频国产 | www操操 | 中文字幕人成不卡一区 | www色片 | 久久人人爽人人爽人人片av免费 | 久久久久综合网 | 国产亚洲午夜高清国产拍精品 | 色停停五月天 | 久草在线视频精品 | 国产精品ⅴa有声小说 | 久久成人人人人精品欧 | 尤物一区二区三区 | 96国产在线| 亚洲免费国产视频 | 日韩一区二区免费视频 | 在线影院 国内精品 | 99免费在线视频 | av短片在线 | 欧美a级免费视频 | 91九色最新 | 欧美美女视频在线观看 | 亚洲天天干 | 欧美一二三四在线 | 麻豆精品在线 | 五月婷婷丁香在线观看 | 激情欧美一区二区三区 | 久久免费视频在线观看 | 在线中文字幕av观看 | 欧美性网站 | 91精品在线免费 | av免费片 | 九九久久精品视频 | 久久99久久99精品免视看婷婷 | 亚洲在线视频播放 | 最近最新中文字幕 | 视频在线观看一区 | 日韩欧美视频在线播放 | 在线观看中文字幕av | 国产一级做a爱片久久毛片a | 欧美一级日韩免费不卡 | 91色吧| 久久精品国产亚洲精品 | 国产精品99爱 | 欧女人精69xxxxxx | 在线国产片| 久久久福利视频 | 国内免费久久久久久久久久久 | 久久精品国产精品 | 欧美视频在线观看免费网址 | 国产精品久久精品 | 亚洲在线不卡 | av资源免费在线观看 | 精品久久久久久久久久国产 | 色综合久久久久网 | 91九色在线视频观看 | 日本中文在线播放 | 91丨九色丨国产在线 | 国产精品久久久久久久久久久久午 | 美女国产精品 | 国产精品一区二区av影院萌芽 | 国产亚洲日本 | 成人国产综合 | 欧美一级视频一区 | 色姑娘综合网 | 9草在线 | 日本午夜在线亚洲.国产 | 久久久久久国产精品久久 | 国产123区在线观看 国产精品麻豆91 | 色吊丝在线永久观看最新版本 | 精品久久久久久亚洲 | 久久精品影视 | 黄色资源在线观看 | 日韩区欧美久久久无人区 | 夜添久久精品亚洲国产精品 | 欧美日韩国产综合一区二区 | 黄色在线观看网站 | 在线免费成人 | 日韩欧美精品免费 | 久久久久欧美精品999 | 视频在线观看入口黄最新永久免费国产 | 国产精品久久99综合免费观看尤物 | 日韩成人在线一区二区 | www.色午夜 | 91夫妻视频 | 成人久久久精品国产乱码一区二区 | 91最新地址永久入口 | 91麻豆网站| 麻豆视频免费在线播放 | 国产精品第一页在线观看 | 天天插天天 | 亚洲午夜精品在线观看 | 人人网av| 国产男女无遮挡猛进猛出在线观看 | 成人黄色av免费在线观看 | 在线视频免费观看 | 国产91精品久久久久 | 国产a视频免费观看 | 国产中文字幕在线播放 | 麻豆av一区二区三区在线观看 | 青草视频在线 | 中文字幕在线日本 | 欧美日韩天堂 | 在线观看黄色免费视频 | 国产日本三级 | 97碰碰碰 | 激情网婷婷 | 久久久久一区二区三区 | 国产精品18久久久久白浆 | 精品久久五月天 | 韩日精品视频 | 国产人成在线视频 | 亚洲高清免费在线 | 婷婷久久一区 | 国产一级h| 中文字幕丝袜制服 | 天堂av免费在线 | 狠狠干中文字幕 | av在线播放免费 | 亚州国产精品 | 精品国产乱码一区二 | 992tv在线成人免费观看 | 国产小视频免费在线网址 | 亚洲精选久久 | 国产品久精国精产拍 | 在线观看av大片 | 欧美午夜性生活 | 2019精品手机国产品在线 | 婷婷久久五月天 | 亚洲成人资源在线观看 | 亚洲国产福利视频 |