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

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

DB2用戶定義函數實現多種語言的排序(1)

瀏覽:5日期:2023-11-10 18:19:43
當在 DB2 UDB 數據庫中存儲多語種數據時,Unicode 往往是惟一一種能夠適應整個數據范圍的編碼。DB2 可以存儲和處理 Unicode 數據,但是它的排序功能只限于二進制排序和三種文化排序。另外,一個數據庫只能有一種排序規則,這是在創建數據庫時決定的。對于需要支持多種語言的用戶和數據的數據庫,這些排序限制是一個明顯的難題。IBM 創建了一個用于治理 Unicode 數據的函數庫,稱為 ICU(International Components for Unicode)。這個庫為 C 和 Java™ 編程語言提供了一整套操作 Unicode 數據的函數。這個庫是在一種無限制的開放源碼許可證下發布的,這使它可以在許多應用程序中使用。ICU 提供的函數實現了標準的 Unicode Collation Algorithm(UCA)以及許多文化調整功能。很輕易將適當的 ICU 函數組合成一個 UDF(用戶定義函數),從而讓 DB2 可以充分利用 ICU 的排序支持。(隨便說一句,DB2 for Linux, UNIX, and Windows 就是使用 ICU 庫來實現在 Unicode 數據上支持的三種文化排序。)本文主要關注 DB2 V8 for Linux, UNIX, and Windows,但是這個 UDF 示例也可以用在即將發布的 Viper 上。這個 UDF 也應該能夠用在 DB2 V7 FP3 或更高版本上,但是這沒有經過測試。另外,這個 UDF 可能能夠用在 DB2 for zSeries® 和 iSeries™ 上,但是這沒有經過測試,本文也不討論這些平臺。安裝示例數據庫本文假設要使用的數據庫稱為 SAMPLE,但是可以使用任何數據庫。無論使用哪個數據庫,它必須是 Unicode 數據庫。為了判定一個數據庫是否是 Unicode 數據庫,執行以下命令:db2 get database configuration for sample接近配置信息頂部的 “Database code page 條目必須是 “utf-8。假如沒有 Unicode 數據庫可用,那么可以用以下命令創建一個: 123456789下一頁 db2 create database sample using codeset utf-8 territory ca本文提供了針對 32 位 Intel 和 AMD 平臺的二進制代碼。下面介紹在 Linux 和 Windows 上如何安裝預構建的二進制代碼。對于所有其他平臺,編譯 ICU 和 UDF 中提供了說明。針對 Linux(32 位 Intel 或 AMD)預構建的二進制代碼要在 Linux 上安裝預構建的二進制代碼:從 “下載 中下載文件 sortkey-linux-x86.zip 并將它解壓到一個臨時目錄中。將以下文件:sortkeylibicui18n.so.34libicuuc.so.34libicudata.so.34復制到 sqllib/function 中。連接到數據庫,并運行 DDL 腳本來對這個函數進行編目:db2 connect to sampledb2 -tvf createfn.db2注:這個 Linux 預構建二進制代碼是在 Red Hat Linux 7.2 上用 gcc 2.96 編譯的。針對 Windows(32 位)預構建的二進制代碼要在 Windows 上安裝預構建的二進制代碼:從 “下載 中下載文件 sortkey-windows-32.zip 并將它解壓到一個臨時目錄中。將以下文件:sortkey.dllicuin34.dllicuuc34.dllicudt34.dll復制到 sqllib/function 中。使用一個 DB2 命令窗口連接到數據庫,并運行 DDL 腳本來對這個函數進行編目:db2 connect to sampledb2 -tvf createfn.db2編譯 ICU 和 UDF要編譯 ICU 和 UDF:下載并安裝 ICU 庫。參見 “參考資料 中 ICU 站點的鏈接,在這里可以下載二進制代碼或源代碼,以及學習如何編譯和安裝這個庫。假如需要的話,將包含 ICU 可執行文件的目錄添加到 PATH 環境變量中。在 Windows 中,還需要更新 LIB 和 INCLUDE 環境變量。LIB 變量應該引用 iculib 目錄,INCLUDE 應該引用 icuinclude 目錄。 上一頁123456789下一頁 從 “下載 中下載文件 sortkey-source.zip 并將它解壓到一個臨時目錄中將文件 sqllib/samples/c/bldrtn(在 Windows 上是 sqllibsamplescldrtn.bat)復制到臨時目錄并編輯復制的文件。對于編譯和鏈接步驟,需要添加關于 ICU 的信息。在 Linux 或 UNIX 上,定義變量 ICU_C_FLAGS 和 ICU_L_FLAGS,并將它們添加到編譯和鏈接命令中。這些變量應該在命令前面定義,并在編譯器或鏈接器可執行文件名后面直接使用。清單 1 顯示 Linux bldrtn 文件中的相關部分。修改之處以粗體顯示。清單 1. 修改的 Linux bldrtn 文件# If an embedded SQL program, precompile and bind it.if [ -f $1".sqc" ]then./embprep $1 $2fi# ICU optionsICU_C_FLAGS="`icu-config --cppflags --cxxflags`"ICU_L_FLAGS="`icu-config --ldflags`"# Compile the program.$CC $ICU_C_FLAGS $EXTRA_C_FLAGS-I$DB2PATH/include -c $1.c -D_REENTRANT# Link the program and create a shared library$CC $ICU_L_FLAGS $LINK_FLAGS -o $1 $1.o $EXTRA_LFLAG -L$DB2PATH/$LIB -ldb2-lpthread在 Windows 上,必須將 ICU 庫添加到鏈接命令中。清單 2 顯示 Windows bldrtn.bat 文件中的相關部分。修改之處以粗體顯示。清單 2. 修改的 Windows bldrtn.bat 文件:link_steprem Link the program.link -debug -out:%1.dll -dll %1.obj db2api.lib icudt.lib icuuc.libicuin.lib -def:%1.def 上一頁123456789下一頁 運行 bldrtn 腳本來編譯這個 UDF: bldrtn sortkey將 sortkey(在 Windows 上是 sortkey.dll)文件復制到 sqllib/function 中。連接到數據庫,并運行 DDL 腳本來對這個函數進行編目:db2 connect to sampledb2 -tvf createfn.db2注重,假如以這種方式編譯這個 UDF,那么在運行它的任何機器上必須完整地安裝 ICU。使用 SORTKEY UDF語法>>--SORTKEY--(--string-expression--,--collation-name--)--><這個 UDF 的模式是 ICU。假如模式 ICU 在 SQL PATH 中,那么就不必對這個 UDF 進行顯式限定引用。SORTKEY UDF 返回一個 VARCHAR(1200) FOR BIT DATA 字符串,代表在指定的 collation-name 中 string-expression 的排序鍵。假如排序鍵的長度超過 1200 字節,那么排序鍵被截斷并返回一個警告(SQLSTATE 01HKY)。SORTKEY 的結果是可空的。假如任何參數是 null,那么結果就是 NULL。可以對兩個字符串的 SORTKEY 結果進行二進制比較,從而判定它們在指定的 collation-name 中的次序。為了讓比較有意義,使用的 SORTKEY 結果必須來自相同的 collation-name。string-expression這個表達式返回一個 CHAR、VARCHAR、GRAPHIC 或 VARGRAPHIC 字符串,UDF 要判定這個字符串的排序鍵。string-expression 的最大長度是 100 個字符(SQLSTATE 22001)。假如 string-expression 是 CHAR 或 VARCHAR,這個表達式必須不是 FOR BIT DATA (SQLSTATE 42846)。假如 string-expression 是空字符串,那么結果是一個具有非零長度的有效排序鍵。collation-name這個字符串表達式指定在判定排序鍵時使用的排序規則。collation-name 的值不是大小寫敏感的,而且必須是空字符串(對應于默認的 UCA 排序)或者 “排序規則名 中定義的一個名稱。(SQLSTATE SKCOL)。 上一頁123456789下一頁 必須從 Unicode 數據庫調用 SORTKEY,否則返回一個錯誤。(SQLSTATE SKUTF)。示例example.db2 中的 Unicode 字符example.db2 文件包含幾個用 UTF-8 進行編碼的字符。理想情況下,應該從一個 Unicode shell 調用下面的示例。假如不是從 Unicode shell 調用示例,那么表 SORTKEY_GERMAN1 和 SORTKEY_GERMAN2 會包含不正確的數據,示例 4 會失敗。為了答應從非 Unicode shell 調用示例,可以將注冊表變量 DB2CODEPAGE 設置為 1208。這會使 DB2 客戶機以 UTF-8 格式處理數據。加重音的字符無法正確顯示,但是示例可以正確地運行。為了設置 DB2CODEPAGE 并運行示例,執行以下命令:db2 terminatedb2set DB2CODEPAGE=1208db2 connect to sampledb2 -tf example.db2當 DB2CODEPAGE 設置為 1208 時,它對其他應用程序可能會產生某些意料之外的效果。在運行示例之后,可以用以下命令恢復 DB2CODEPAGE:db2 terminatedb2set DB2CODEPAGE=這些示例使用的表、數據和查詢可以在文件 example.db2 中找到。當連接數據庫時,可以用以下命令執行它:db2 -tf example.db2ORDER BY不同的語言用不同的規則來決定字母的次序。例如,英語從字母 A 排序到 Z,沒有例外,如第一個示例所示。查詢 1. 用英語排序規則進行排序SELECT NAME FROM SORTKEY_NAMESORDER BY ICU.SORTKEY(NAME, 'LEN')結果 1. 用英語排序規則進行排序碼NAME--------------------AliceCelineCharlesCindyDonHillaryIanSam 上一頁123456789下一頁 但是在斯洛伐克語中,兩個字符的組合 CH 排在字母 H 和 I 之間。查詢 2. 用斯洛伐克語排序規則進行排序SELECT NAME FROM SORTKEY_NAMESORDER BY ICU.SORTKEY(NAME, 'LSK')結果 2. 用斯洛伐克語排序規則進行排序NAME--------------------AliceCelineCindyDonHillaryCharlesIanSam注重,Charles 現在位于 Hillary 和 Ian 之間。比較一些語言對于同一個字符有不同的表示方法。例如,在德語中,字母 ä 等于 ae,ö 等于 oe,ü 等于 ue。在 SQL 中進行比較時,并不考慮這些替代表示方法。假設有兩個德國城市名列表: NuernbergNürnbergLuebeckLuebeckKölnKoeln當使用普通的 SQL 聯結這兩個列表時,不考慮替代的字符表示方法。查詢 3. 未規范化的聯結SELECT G1.CITY AS CITY1, G2.CITY AS CITY2FROM SORTKEY_GERMAN1 AS G1, SORTKEY_GERMAN2 AS G2WHERE G1.CITY = G2.CITYORDER BY G1.CITY結果 3. 未規范化的聯結CITY1CITY2-------------------- --------------------LuebeckLuebeck注重,在這兩個表中只有拼寫完全相同的城市名才被認為是相等的。但是,SORTKEY UDF 可以處理字符的不同表示方法。在這種情況下,我們使用德語排序規則的 “phonebook 變體并將強度設置為 1,從而忽略重音差異。(排序規則選項的完整列表見 “排序規則名。) 上一頁123456789下一頁 查詢 4. 規范化的聯結SELECT G1.CITY AS CITY1, G2.CITY AS CITY2FROM SORTKEY_GERMAN1 AS G1, SORTKEY_GERMAN2 AS G2WHERE ICU.SORTKEY(G1.CITY, 'LDE_KPHONEBOOK_S1') =ICU.SORTKEY(G2.CITY, 'LDE_KPHONEBOOK_S1')ORDER BY G1.CITY結果 4. 規范化的聯結CITY1CITY2-------------------- --------------------K&ouml;lnKoelnLuebeckLuebeckNuernbergNürnberg通過使用排序鍵(而不是值本身)進行比較,適當地處理了名稱中的次要差異。通過選擇適當的排序規則,可以根據語言進行比較、忽略大小寫和重音差異或者完全忽略某些字符。在 ORDER BY 子句中,修改一個排序規則的強度來忽略字符屬性可能會導致不確定的查詢結果次序。例如, ORDER BY ICU.SORTKEY(COLUMN, 'S1') (這里使用的排序規則會忽略大小寫和重音)會正確地排列 A < B < C。但是,這個排序規則不區分 “apple、“Apple 和 “APPLE,可能以任意次序返回這些單詞。SORTKEY 產生的值依靠于使用的排序規則。因此,當在謂詞中使用 SORTKEY 時,比較的兩邊要使用完全相同的排序規則。性能考慮因素當在查詢中引入 UDF 時,它會損害查詢的性能。對數據庫和查詢的設計進行仔細地分析,可以將性能影響最小化。要考慮的一些因素是:使用固定的排序規則名盡可能少使用 SORTKEY使用生成的列使用固定的排序規則名預備要使用的排序規則是一種開銷很大的操作。因此,在查詢執行時不要改變排序規則名。例如,考慮以下表和查詢: 上一頁123456789下一頁 NAMES: NAMELANGUAGE------------BobLENMarcLFRSerge LDESELECT NAME FROM NAMESWHERE ICU.SORTKEY(NAME, LANGUAGE) = ICU.SORTKEY(:hv, LANGUAGE)在這個例子中,對于每一行都要預備一個新的排序規則。這樣做的效率非常低。假如 SORTKEY 的第二個參數替換為一個字面字符串或主機變量,那么查詢的性能會好得多。注重,可以在一個查詢中混合使用不同的排序規則,只要每個排序規則在不同的 SORTKEY 實例中。以下查詢的性能會好得多:SELECT NAME FROM NAMESWHERE ICU.SORTKEY(NAME, 'LFR') = ICU.SORTKEY(:hv, 'LFR')盡可能少使用 SORTKEY假如知道數據是一致的,那么就不需要對每個操作都使用 SORTKEY。例如,考慮前面的 查詢 3 和 查詢 4。假如數據是以一致的方式輸入的,比如總是使用 ä、ö 和 ü,或者已經對數據進行了清理,將所有 ae、oe 和 ue 替換為 ä、ö 和 ü,那么查詢 3 和查詢 4 會返回同樣的結果,而查詢 3 運行得快的多。假如數據是一致的,就不經常需要 SORTKEY。盡可能使用標準的 SQL 比較操作符,并在最后的 ORDER BY 中使用 SORTKEY。使用生成的列假如數據庫經常使用很少幾個排序規則,那么可以考慮使用生成的列預先計算 SORTKEY 的結果,并將這些結果存儲在數據庫中。例如,假設一個數據庫通常只需要法語和德語排序規則。在這種情況下,根據表的總規模,可以考慮創建生成的列來保存 SORTKEY 的結果。例如:清單 3. 創建生成的列來保存 SORTKEY 的結果CREATE TABLE NAMES(NAME VARCHAR(50),NAME_FR_KEY VARCHAR(1200) GENERATED ALWAYS AS (ICU.SORTKEY(NAME, 'LFR')),NAME_DE_KEY VARCHAR(1200) GENERATED ALWAYS AS (ICU.SORTKEY(NAME, 'LDE')))SELECT NAME FROM NAMESORDER BY ICU.SORTKEY(NAME, 'LFR') 上一頁123456789下一頁 當 DB2 查詢編譯器對這個查詢進行運算時,它會意識到 ICU.SORTKEY(NAME, 'LFR') 的值已經計算出來了,它會使用 NAME_FR_KEY 列來替代這個值。但是,假如查詢使用 ICU.SORTKEY(NAME, 'LES') (西班牙語排序規則),那么 SORTKEY 函數必須作為查詢的一部分執行。不幸的是,將生成的列記錄為 VARCHAR(1200) 值會占用表中的大量空間。好在,還有一些辦法。一個辦法是修改 createfn.db2,讓 SORTKEY 產生長度更短的結果類型。假如這樣做了,那么應該減小 sortkey.c 中的常量 MAX_RESULT,還應該重新編譯這個 UDF。另一個辦法是將 SORTKEY 的結果轉換為更短的 VARCHAR 值。但是,對于使用生成的列的優化器,必須在每個引用中使用同樣的轉換。這種辦法如下所示:清單 4. 在每個引用中使用同樣的轉換CREATE TABLE NAMES(NAME VARCHAR(50),NAME_FR_KEY VARCHAR(600)GENERATED ALWAYS AS (CAST(ICU.SORTKEY(NAME, 'LFR')AS VARCHAR(600))),NAME_DE_KEY VARCHAR(600)GENERATED ALWAYS AS (CAST(ICU.SORTKEY(NAME, 'LDE')AS VARCHAR(600))))SELECT NAME FROM NAMESORDER BY CAST(ICU.SORTKEY(NAME, 'LFR') AS VARCHAR(600))總是需要指定轉換,這使這種辦法不夠理想。可以使用下面的源函數將轉換隱藏起來:清單 5. 使用源函數將轉換隱藏起來CREATE FUNCTION MY_SORTKEY(VARCHAR(50), VARCHAR(50))RETURNS VARCHAR(600) FOR BIT DATASOURCE ICU.SORTKEYCREATE TABLE NAMES(NAME VARCHAR(50),NAME_FR_KEY VARCHAR(600) GENERATED ALWAYS AS (MY_SORTKEY(NAME, 'LFR')),NAME_DE_KEY VARCHAR(600) GENERATED ALWAYS AS (MY_SORTKEY(NAME, 'LDE')))SELECT NAME FROM NAMESORDER BY MY_SORTKEY(NAME, 'LFR')不管使用哪種方法,重要的考慮因素都是生成的列的長度。SORTKEY 結果的長度可能比原來的字符串長。簡單的規則是,對于輸入字符串中的每個字符,在輸出字符串中答應有 12 字節。(對于某些不常見的排序規則和輸入值組合,這個空間甚至也可能不夠。)但是,許多排序規則會產生比這短得多的排序鍵,因此在決定生成的列的大小時,對要使用的排序規則和數據進行一些實驗是有幫助的。 上一頁123456789
標簽: DB2 數據庫
主站蜘蛛池模板: 久久精品电影网 | 日韩毛片 | 午夜精品久久久久久久男人的天堂 | a欧美| 97综合色 | 成人免费观看男女羞羞视频 | 国产超碰在线 | 亚洲成人三级 | 日韩一级片 | 在线视频 亚洲 | 亚洲成年人影院 | 中文字幕日本视频 | 国产精品成人一区二区 | 久久e久久| 99福利视频 | 青草青草久热精品视频在线观看 | 久草新视频在线观看 | 国产精品99久久免费观看 | 欧美第一网站 | 欧美日韩久久精品 | 中文字幕一区二区三区乱码图片 | 国产成人午夜高潮毛片 | 中文字幕不卡 | 欧美日韩亚洲视频 | 97人人做人人人难人人做 | 91超碰在线播放 | 一本大道综合伊人精品热热 | 欧美日韩在线观看一区二区三区 | 日韩在线大片 | 亚洲国产精品一区二区久久 | 久久青青| 嫩草私人影院 | 综合精品久久久 | 在线观看免费视频a | 一区二区三区精品 | 国产一二区在线观看 | 久久国产久| 范冰冰一级做a爰片久久毛片 | 亚洲毛片 | 超碰在线人人 | 99r在线 | 91精品国产九九九久久久亚洲 | 国产成人av网站 | 蜜桃在线视频 | 天堂成人av | 国产一区二区免费 | 久久久精品网站 | 欧美国产一区二区三区 | 国产精品毛片久久久久久久 | 久久久一二三 | 蜜桃免费一区二区三区 | 作爱视频免费看 | a在线观看免费视频 | 成人片免费看 | 亚洲精品在线视频 | 久久久精彩视频 | 久久蜜桃av一区二区天堂 | 国产精品久久久久久久久久久新郎 | 91精品国产乱码久 | 久久精品亚洲一区二区 | 好色视频在线观看 | 精品www| 少妇一级淫免费放 | 日本不卡一区二区 | 久久伦理电影网 | 亚洲国产中文字幕 | 国产一区中文字幕 | 人人草人人 | 涩涩综合 | 天天干夜夜拍 | 中文字幕亚洲欧美日韩在线不卡 | 亚洲av毛片一级二级在线 | 国产精品一区在线观看你懂的 | 99精品福利视频 | 91一级| 国产免费一区二区 | 成人欧美一区二区三区在线播放 | 亚洲精品一区二区三区 | 一区二区视频 | 日韩欧美专区 | 成人午夜看片 | 亚洲乱码国产乱码精品精 | 精品日韩在线 | 久久中文视频 | 亚洲免费在线观看 | 精品一二区 | www.伊人.com| 一区二区三区亚洲精品国 | 久久人体| 国产欧美综合一区二区三区 | 亚洲免费观看视频 | 欧美性生活视频 | 欧美精品在线一区 | 国产黄色在线免费看 | 久久免费视频在线 | 亚洲一区二区三区四区的 | 欧美精品一区二区三区四区在线 | 中文字幕在线第一页 | 国产在线小视频 | 日韩a电影 | 国产精品美女久久久久aⅴ国产馆 | 91九色视频 | 亚洲日本国产 | 国产精品综合 | 国产精品久久久久久久久免费桃花 | 青青久在线视频 | 午夜私人福利 | 亚洲成人精品久久 | 国产精品视频一区二区三区 | 欧美日韩一区二区三区免费视频 | 午夜精品一区二区三区在线观看 | 国产传媒毛片精品视频第一次 | 国产欧美精品一区二区 | 99亚洲精品 | 吴梦梦到粉丝家实战华中在线观看 | 一区二区三区在线免费观看 | 91精品久久久久久久 | 日韩精品一91爱爱 | 欧洲美女性开放视频 | 亚洲国产成人在线 | 91大片| 欧美二区精品 | 在线精品亚洲欧美日韩国产 | 欧美精品二区中文乱码字幕高清 | 国产精品久久久久无码av | 中文字幕第80页 | 亚洲精品电影在线观看 | 欧美精品一区二区三区四区五区 | 精品国产成人 | 国产高清在线a视频大全 | 日韩电影三级 | 国产男女视频在线观看 | 午夜精品一区二区三区在线播放 | 亚洲夜幕久久日韩精品一区 | 欧美激情精品久久久久 | 国产精品久久久久久中文字 | 国产黄网 | 精品国产一区二区三区不卡蜜臂 | 亚洲 欧美 日韩 丝袜 另类 | 国产一级免费在线观看 | 亚洲一区二区三区 | 欧美一区二区三区视频在线观看 | 男女视频免费 | 亚洲一区二区av | 日本成人在线视频网站 | 韩国精品视频在线观看 | 伊人激情综合网 | 91日日| 国产高清精品在线 | 日本在线视频一区 | 搞黄视频在线观看 | 黄色av网站免费 | 韩国电影久久 | 免费视频一区二区 | 综合一区 | 中文字幕av一区二区 | 国产精品久久久久久久久久99 | 一区二区三区精品 | 欧美成人综合在线 | 欧美国产一区二区 | 亚洲精品7777xxxx青睐 | 蜜桃精品久久久久久久免费影院 | 午夜精品在线观看 | av解说在线精品 | 久久国产精品久久久久久电车 | 在线看片网站 | 一级片黄片毛片 | 国产精品一区二区三区四区 | 国产99久久精品一区二区永久免费 | 第一色站 | 国产在线一区二区三区 | 久热久热| 在线观看中文字幕 | 欧美,日韩,国产精品免费观看 | 国产一区二区av | 粉嫩国产精品一区二区在线观看 | 国产美女福利在线 | 国产精品久久久久久久久免费桃花 | 国产精品久久久久久久福利院 | 在线成人免费观看www | 欧美永久精品 | 国产麻豆乱码精品一区二区三区 | 成人网av| 麻豆精品一区二区 | 亚洲免费一区 | 欧美天天 | 国产精品毛片在线 | 五月婷综合 | 欧美九九九 | 操操网| 亚洲大片免费观看 | 四虎影院网 | 久久综合久久综合久久综合 | 一级毛片免费播放 | 亚洲福利精品视频 | 欧美中文字幕在线观看 | xxxx性欧美 | 国产成人黄色 | 国产高清在线 | 少妇一区二区三区 | 美日一级毛片 | 超碰人操| 一级毛片免费播放 | 91精品久久久久久久久 | 日韩在线精品 | 国产不卡在线 | 99热国产在线观看 | 色先锋影音 | 电影91久久久 | 欧美成人三区 | 成人在线 | 草草影院ccyycom | 亚洲国产成人精品久久 | 国产精品久久国产愉拍 | 久久精品色欧美aⅴ一区二区 | 久久综合一区二区 | 国产精品久久久久久久一区探花 | 精品美女一区 | 国产在线一区观看 | 日韩乱视频 | 久久精品播放 | 看a网址| 美女精品视频在线 | 九色在线 | 精品乱子伦一区二区三区 | 在线播放国产一区二区三区 | 91麻豆精品国产91久久久更新资源速度超快 | 日韩欧美一区二区三区 | 午夜免费福利在线 | 97国产精品| 国产免费成人 | 日韩精品成人 | 久久福利电影 | www国产一区 | 在线精品观看 | 老司机深夜福利视频 | 欧美亚洲一区 | 亚洲欧美一区二区在线观看 | 午夜成人免费视频 | 亚州精品视频 | 国产成人一区二区三区影院在线 | 久久亚洲精品国产精品紫薇 | 成人精品在线视频 | 男女羞羞羞视频午夜视频 | 欧美成人免费在线视频 | 久久久久av | 日韩欧美综合 | 国产免费看 | 欧美精品欧美极品欧美激情 | 国产在线一区观看 | 日本 国产 欧美 | 亚洲欧美久久久 | 巴西性猛交xxxx免费看久久久 | 日韩成人在线播放 | 日本三级电影网站 | 一区二区亚洲 | 欧美黑人巨大xxx极品 | 日韩精品久久久久久 | 久综合网| 国产精品毛片 | 婷婷av在线| 亚洲国产精品久久久久久久 | 精品久久亚洲 | 亚洲激情在线播放 | 午夜精品福利一区二区三区蜜桃 | 国产精久久一区二区三区 | 国产精品日本一区二区不卡视频 | 91久久久久久久久久久久久久久久 | 亚洲一区二区三区四区在线观看 | 国产精品国产三级国产aⅴ入口 | 久久草草影视免费网 | 国产精品视频免费看 | 91啦| 国产区视频在线观看 | 成人午夜激情 | 狠狠色综合色综合网络 | 日韩欧美精品一区二区三区 | 欧美一级片免费播放 | 羞羞的视频在线 | 天天干人人干 | 久久精品性 | 久久久成人精品 | 很黄很色很爽的视频 | 狠狠干网站 | 免费成人在线观看 | 爱爱网av | 最近的中文字幕在线看视频 | 亚洲一区二区免费看 | 国产精品一区亚洲二区日本三区 | 日韩精品免费在线观看 | 伊人二区| 精品在线一区二区三区 | 国产综合久久久久久鬼色 | 中文字幕一区二区三区精彩视频 | 极品毛片 | 黄色成人在线网站 | 亚洲精品一区二三区不卡 | 日韩视频在线免费观看 | 欧美五月 | 久久精品亚洲一区 | 国产精品99久久久久久久vr | 男女视频在线看 | 欧美一级视频 | 中文字幕亚洲一区二区三区 | 女人毛片 | 操片 | 国产精品久久av | 亚洲一区二区三区 | 国产精品久久免费观看spa | 久久久久久久久久一区二区 | 成人在线视频网站 | 久久久www成人免费精品 | 草草网| 成人在线视频一区 | 在线播放国产一区二区三区 | 青青草一区二区三区 | 国产精品成人一区二区三区夜夜夜 | 国产成人免费视频网站视频社区 | 成人一级电影在线观看 | 国产在线精品一区二区三区 | 亚洲欧美日韩国产综合 | 国产精品亚洲视频 | 久久中文字幕一区 | 亚洲免费在线观看 | 男人天堂视频网 | 精品欧美一区二区精品久久久 | 成年人网站国产 | 岛国一区 | 精品久久久精品 | 99爱免费视频 | www精品| 欧美日韩中文字幕在线 | 日韩中文字幕在线视频 | 久久久久一区二区三区 | 国产超碰人人爽人人做人人爱 | 国产美女高潮一区二区三区 | 亚洲精品久久久一区二区三区 | 国产不卡精品视频 | 欧美成人免费网站 | 91在线高清| 欧美成人在线影院 | 美女视频一区 | 9se成人免费网站 | 精品国产黄a∨片高清在线 激情网站免费 | 久久首页 | 密色视频| 一区二区三区在线视频播放 | 国产精品久久久久久久久久久久久 | 午夜免费片 | 成人h在线 | 日韩欧美一区二区视频 | 日韩一区二区在线观看视频 | 久久久天堂国产精品女人 | 欧美 亚洲 另类 激情 另类 | 91精品国产综合久久久久久丝袜 | 午夜亚洲福利 | 青青久久| 国产中文视频 | 在线观看精品自拍私拍 | 亚洲精品一区二区三区四区高清 | 国产剧情一区二区 | 超级乱淫片国语对白免费视频 | 国产乱码精品一区二区三 | 亚洲丶国产丶欧美一区二区三区 | 亚洲h在线观看 | 91在线视频一区 | 国产亚洲精品v | 欧美日韩激情在线 | 国产精品久久久久久久久小说 | 躁躁躁日躁夜夜躁 | 国产在线一区二区三区 | 国产成人一区 | 成人av免费在线观看 | 成人免费一区二区三区视频网站 | 久久精品欧美 | 91精品国产综合久久久久久丝袜 | 国产一区精品在线 | 日韩欧美视频在线 | 国产在线中文字幕 | 国产高潮在线观看 | 米奇狠狠狠狠8877 | 毛片99 | 色综合国产 | 亚洲一区 日韩精品 中文字幕 | 成人精品免费视频 | av色伊人久久综合一区二区 | 97精品久久 | 国产精品无码永久免费888 | 国产精品一品二区三区的使用体验 | 国产一区二区在线观看视频 | 午夜免费观看网站 | 九九亚洲精品 | 日韩福利片 | 日本超碰在线 | 色黄视频在线观看 | 欧美三级视频在线播放 | 日本不卡免费新一二三区 | 国产一区二区三区精品久久久 | 日韩成人短视频 | 亚洲国产精品久久久久秋霞蜜臀 | 国产一级视频 | 在线观看国产视频 | 欧美一级免费大片 | 国产中文一区 | 欧美一级片免费看 | 久久com| 91av视频在线| 国产情侣在线视频 | a级在线免费观看 | 欧美一区二区在线播放 | 日韩成人 | 久久久久久久中文 | 成人国产精品久久 | 精品国产不卡一区二区三区 | 色视频在线免费观看 | 日韩精品www | 91综合在线观看 | 91精品国产综合久久久久久 | 亚洲xx视频 | 香蕉大人久久国产成人av | 青青久久 | 国产高清免费视频 | 99精品九九 | 久久久久久久久久一区二区 | 天天操操| 国产精品美女久久久久久久久久久 | 欧美日本乱大交xxxxx | 亚洲成人精品一区 | 性高湖久久久久久久久aaaaa | 97成人在线 | 国产日韩视频在线观看 | 久久久久久久久久影院 | 欧美在线a | 日韩欧美黄色 | av手机在线电影 | 欧美日韩一区在线 | 精品中文字幕一区二区三区 | 色视频网站在线观看 | 色婷婷国产精品 | 一区二区国产精品 | 久久久久久综合 | 国产精品视频免费 | 天天操天天拍 | 国产91久久精品一区二区 | 亚洲成人网一区 | 亚洲国产欧美在线 | 欧美成人免费 | 亚洲欧美日韩在线一区 | 成人二区 | 久久国产精品一区 | 日韩国产在线观看 | 日本精品久久 | 亚洲国产成人在线 | 国产精品美女久久久久久免费 | 日韩精品区 | 国产不卡在线观看 | 欧美综合在线一区 | 狠狠操麻豆 | 久久国产精品免费一区二区三区 | 激情视频在线观看免费 | 91秦先生艺校小琴 | 午夜精品久久久 | 久久九九视频 | 久久国产视频一区二区 | 一区二区精品视频 | 亚洲综合色视频在线观看 | 99精品国产高清一区二区麻豆 | 国产精品自拍视频网站 | av在线一区二区 | 国产精品不卡视频 | 精品久久精品 | 欧美日韩国产在线观看 | 山岸逢花在线观看无删减 | 免费看毛片网 | 国产中文字幕在线观看 | 久久窝 | www中文字幕| 国产欧美日韩在线 | 久久久久国产精品 | 呦呦在线观看 | av网站免费观看 | 午夜精品久久久久久久久久久久久 | 国产一区二区三区四区 | 久久精品一区二区三区四区 | 91麻豆精品国产91久久久更新时间 | 欧美一级片在线 | 亚洲xxxx3d | 黄色免费成人 | 欧美一区二区三区在线 | 男人av网 | 一区二区三区在线播放 | 一级免费毛片 | 欧美精品一区二区三区中文字幕 | 91精品综合久久久久久五月天 | 欧美日韩成人免费 | 亚洲视频中文字幕 | 在线日韩视频 | 日本一级淫片免费看 | 欧美成人精品一区二区三区 | 国产高清一级毛片在线不卡 | 四季久久免费一区二区三区四区 | 日日躁夜夜操 | 国产亚洲精品美女久久久久久久久久 | 精品久久久久久久人人人人传媒 | 欧美一区永久视频免费观看 | www.天天操.com| 一区二区三区在线免费观看 | 日本欧美国产 | 一区二区三区精品视频 | 成人免费福利视频 | 狠狠爱www人成狠狠爱综合网 | 欧美高清dvd | 国产在线观看一区二区三区 | 99精品全国免费观看视频软件 | 国产精品国产三级国产aⅴ9色 | 久久久www成人免费精品 | 久久久99日产 | 一级片视频免费 | 亚洲美女网站 | 久久一区 | 久久久999成人 | 国产女无套免费网站 | 国内精品久久久久久中文字幕 | 性色在线视频 | 欧美一级日韩 | 青青久视频| 精品日韩一区二区 | 视频一区二区三区在线观看 | www在线视频 | 亚洲欧美日韩在线一区 | 欧美黄色一区 | 日韩欧美一区二区三区四区 | 国产成人精品午夜视频' | 久久国产精品一区 | 久久久久久综合 | 成人久久久| 久久免费视频观看 | 天堂在线中文字幕 | 国产成人精品高清久久 | 伊人免费网| 国产视频一区在线 | 精品欧美一区二区三区久久久 | 欧美视频精品 | 久久久夜夜夜 | 91在线综合 | 精品美女久久久 | 蜜桃久久av| 国产伦精品一区二区三区四区视频 | 精品中文字幕在线 | 在线亚洲人成电影网站色www | 日韩精品一区二区三区视频播放 | 一区二区三区在线播放 | 韩日av在线 | 日韩中文字幕无码一区二区三区 | 99草免费视频 | 亚洲精品一区二区三区麻豆 | 成人国产精品视频 | 激情网页| 成人免费在线视频 | 在线播放黄色片网站 | 免费看国产片在线观看 | 欧美综合一区 | 91免费在线看 | 午夜精品久久久久久久久久久久 | 久久伊99综合婷婷久久伊 | 亚洲一区二区在线视频 | 岛国免费av | www.国产精品.com | 美女h在线观看 | 国产美女视频网站 | 国产欧美日韩在线观看 | 二区影院 | 亚洲一区中文 | 人人干人人干人人 | 成人在线 | 久久国产欧美一区二区三区精品 | 暖暖日本在线视频 | 久久久久久久久久久久99 | 日韩av福利 | 大香一网 | 精品成人av | 久久久久久久av | 欧美成人激情 | 亚洲成人免费 | 国产精品美女久久久久久久网站 | 超碰天堂| 精品一区二区三区视频 | 日韩成人影院 | 中文在线视频 | 亚洲国产网站 | 午夜激情影院 | 成人久久久久久久久 | 国产影音先锋 | 久久伊人影院 | 欧美黄视频 | 欧美精品一区二区久久 | 一级视频在线观看 | 国产色网站 | 国产精品片aa在线观看 | 国产中文字幕在线观看 | 国产美女高潮一区二区三区 | 中文在线a在线 | 国产黄色精品 | av黄色在线观看 | 成人精品一区二区 | 天天看天天操 | 国产一级片 | 国产性×xxx盗摄xxxx | 欧美在线视频一区二区 | 日韩有码在线播放 | 国产高潮呻吟久久渣男片 | 欧洲一区在线 | 日韩成人在线一区 | 五月婷婷综合激情网 | 一本大道久久a久久精二百 亚洲欧美高清 |