成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換

瀏覽:110日期:2023-11-30 18:34:28

; 2.4 表達式求值和類型轉換 ; MySQL允許編寫包括常量、函數調用和表列引用的表達式。這些值可利用不同類型的運算符進行組合,諸如算術運算符或比較運算符。表達式的項可用圓括號來分組。表達式在SELECT 語句的列選擇列表和WHERE 子句中出現得最為頻繁,如下所示:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 所選擇的每列給出了一個表達式,如WHERE 子句中所示的那樣。表達式也出現在DELETE 和UPDATE語句的WHERE 子句中,以及出現在INSERT 語句的VALUES( ) 子句中。 ; 在MySQL遇到一個表達式時,它對其求值得出結果。例如, (4 * 3)/(4 - 2) 求值得6。表達式求值可能涉及類型轉換。例如, MySQL在數960821用于需要日期值的環(huán)境時,將其轉換為日期“ 19 9 6 - 0 8 - 2 1”。本節(jié)討論怎樣編寫MySQL的表達式,以及在表達式求值中MySQL所使用的類型轉換規(guī)則。每個MySQL的運算符都介紹過了,但MySQL有那么多的函數,我們只接觸過幾個。每個運算符和函數的進一步介紹可參閱附錄C。 ; 2.4.1撰寫表達式 ; 表達式可以只是一個簡單的常量,如: ; 0 數值常量 ; “a b c” 串常量 ; 表達式可以進行函數調用。有的函數需要參數(圓括號中有值),而有的不需要。多個參數應該用逗號分隔。在調用一個函數時,參數旁邊可以有空格,但在函數名與圓括號間不能有空格。下面是一些函數例子:NOW( ) 無參數函數 ; STRCMP (“a b c”, “d e f”) 有兩個參數的函數 ; STRCMP( “a b c”, “d e f”) 參數旁邊有空格是合法的 ; STRCMP (“a b c”, “d e f”) 函數名后跟空格是不合法的 ; 如果函數名后有一個空格, MySQL的分析程序可能會將函數名解釋為一個列名(函數名不是保留字,如果需要的話,可將它們用作列名)。其結果是出現一個語法錯誤。表達式中可使用表列。最簡單的情形是,當某個列所屬的表在上下文中是明確的,則可簡單地給出列名對該列進行引用。下面的每個SELECT 語句中惟一地出了一個表名,因此,列的引用無歧義:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 如果使用哪個表的列不明確,可在列名前加上表名。如果使用哪個數據庫中的表也不明確的話,可在表名前加上數據庫名。如果只是希望意思更明顯,也可以在無歧義的上下文中利用這種更為具體的表示形式,如:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 總之,可以組合所有這些值以得到更為復雜的表達式。 ; 1. 運算符的類型 ; MySQL有幾種類型的運算符,可用來連接表達式的項。算術運算符,如表2-15 所示,一般包括加、減、乘、除以及模運算符。在兩個操作數都是整數時,“+”、“-”和“ *”算術運算用BIGINT(64 位)整數值來完成。而在結果預期為一個整數時,“/”和“%”也是用BIGINT(64 位)整數值來完成的。應該認識到,如果某個運算涉及更大的值,如結果超過64 位,其結果不可預料。Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 邏輯運算符如表2 - 16所示,對表達式進行估計以確定其為真(非零)或假(零)。MySQL包含有C 風格的“& &”、“| |”和“!”運算符,可替換A N D、OR 和N O T。要特別注意“| |”運算符,ANSI SQL 指定“| |”作為串連接符,但在MySQL中,它表示一個邏輯或運算。如果執(zhí)行下面的查詢,則返回數0:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 MySQL為進行運算,將“ a b c”和“d e f”轉換為整數,且兩者都轉換為0, 0與0進行或運算,結果為0。在MySQL中,必須用CONCAT (“a b c”, “d e f”) 來完成串的連接。Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 位運算符如表2-17 所示,完成按位“與”和“或”,其中結果的每一位按兩個操作數的對應位的邏輯AND 或OR 求值。還可以進行位的左移或右移。位運算用BIGINT(64 位)整數值進行。Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 比較運算符如表2-18 所示,其中包括測試相對大小或數和串的順序的運算符,以及完成模式匹配和測試NULL 值的運算符?!?lt; = >”運算符是MySQL特有的,在MySQL3.23版本中引入。Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 自MySQL3.23版本起,可使用B I N A RY 運行符,此運算符可用來將一個串轉換為一個二進制串,這個串在比較中是區(qū)分大小寫的。下列的第一個比較是不區(qū)分大小寫的,但第二個和第三個比較是區(qū)分大小寫的:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 沒有相應的NOT BINARY 計算。如果希望使一個列既能在區(qū)分大小寫又能在不區(qū)分大小寫的環(huán)境中使用,則應該利用不區(qū)分大小寫的列并對希望區(qū)分大小寫的比較使用BINARY。對于利用二進制串類型(CHAR BINARY、VARCHAR BINARY 和BLOB 類型)定義的列,其比較總是區(qū)分大小寫的。為了對這樣的列類型實現不區(qū)分大小寫的比較,可利用UPPER( ) 或LOWER( ) 來轉換成相同的大小寫:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 對于不區(qū)分大小寫的串比較,有可能把多個字符認為是相等的,這取決于所用的字符集。例如“e”和“é”對于比較和排序操作可能是相同的。二進制(區(qū)分大小寫)比較利用字符的ASCII 值來完成。 ; 模式匹配允許查找值而不必給出精確的直接值。MySQL利用LIKE 運算符和通配符“%”(匹配任意的字符序列)和“ _”(匹配任意單個字符),提供SQL 的模式匹配。MySQL還基于類似于諸如g r e p、sed 和vi 等UNIX 程序中所用的REGEXP 運算符和擴展正規(guī)表達式,提供模式匹配。為了完成模式匹配,必須使用這些模式匹配運算符中的某一個;不能使用“ =”。為了進行相反的模式匹配,可使用NOT LIKE 或NOT REGEXP。 ; 除了使用的模式運算符和模式字符不同外,這兩種模式匹配還在以下重要的方面存在差異: ; ■ 除非至少有一個操作數為二進制串,否則LIKE 是不區(qū)分大小寫的。REGEXP 是區(qū)分大小寫的。(在MySQL3.23.4 以后的版本中,除非至少有一個操作數是二進制串,否則REGEXP 是不區(qū)分大小寫的。) ; ■ 僅當整個串匹配,SQL 才是模式匹配的。僅當相應的模式在串中某一處出現,正規(guī)表達式才匹配。用于LIKE 運算符的模式可以包括“%”和“_”通配符。例如,模式“ F r a n k %”與任何以“F r a n k”起頭的串匹配:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 通配符“%”與任何串匹配,其中包括與空字符序列匹配,因此“ Frank %”與“ Frank”匹配:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 這也表示模式“%”與任何串匹配,其中包括與空串匹配。但是,“%”不與NULL 匹配。事實上,具有NULL 操作數的任何模式匹配都將失敗:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 MySQL的LIKE 運算符是不區(qū)分大小寫的,除非它至少有一個操作數是二進制串。因此,缺省時“ Frank %”與串“ Frankly”和“frankly”匹配,但在二進制比較中,它只與其中之一匹配:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 這不同于ANSI SQL 的LIKE 運算符,它是區(qū)分大小寫的。通配符可在模式中任何地方給出。“% bert”與“ Englebert”、“Bert”和“Albert”匹配?!? bert %”也與所有這些串匹配,而且還與如像“ Berthold”、“Bertram”、和“Alberta”這樣的串匹配。LIKE 所允許的另一個通配符是“ _”,它與單個字符匹配。“_ _”與三個字符的串匹配?!癱 _ t”與“c a t”、“c ut”甚至“c _ t”匹配(因為“_”與自身匹配)。為了關掉“%”或“ _”的特殊含義,與這些字符的直接實例相匹配,需要在它們前面放置一個斜杠(“ %”或“ _”),如: Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 MySQL的另一種形式的模式匹配使用了正規(guī)表達式。運算符為REGEXP 而不是L I K E(RLIKE 為REGEXP 的同義詞)。最常用的正規(guī)表達式模式字符如下:‘.’與任意單個字符匹配:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 ‘[ . . . ]’與方括號中任意字符匹配??闪谐鲇啥虅澗€‘ -’分隔的范圍端點指定一個字符范圍。為了否定這種區(qū)間的意義(即與未列出的任何字符匹配),指定‘ ^’作為該區(qū)間的第一個字符即可:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 ‘*’表示“與其前面字符的任意數目的字符匹配”,因此,如‘ x *’與任意數目的‘ x’字符匹配,例如:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 “任意數目”包括0個實例,這也就是為什么第二個表達式匹配成功的原因?!甞pat’和‘pat$’固定了一種模式匹配,從而模式pat 只在它出現在串的前頭時匹配,而‘ ^pat$’只在pat 匹配整個串時匹配,例如:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 REGEXP 模式可從某個表列中取出,雖然如果該列包含幾個不同的值時,這樣做比常量模式慢。每當列值更改時,必須對模式進行檢查并轉換成內部形式。MySQL的正規(guī)表達式匹配還有一些特殊的模式字符。要了解更詳細信息請參閱附錄C。 ; 2. 運算符的優(yōu)先級 ; 當求一個表達式的值時,首先查看運算符以決定運算的先后次序。有的運算符具有較高的優(yōu)先級;例如,乘和除比加和減的優(yōu)先級更高。下面的兩個表達式是等價的,因為“ *”和“/”先于“+”和“-”計算:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 下面列出了運算符的優(yōu)先級,從高到低。列在同一行中的運算符具有相同的優(yōu)先級。優(yōu)先級較高的運算符在優(yōu)先級較低的運算符之前求值。Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 可用圓括號來忽略運算符的優(yōu)先級并改變表達式的求值順序,如:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 3. 表達式中的NULL 值 ; 請注意,在表達式中使用NULL 值時,其結果有可能出現意外。下列準則將有助于避免出問題。如果將NULL 作為算術運算或位運算符的一個操作數,其結果為NULL:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 如果將NULL 用于邏輯運算符,NULL 被認為是假:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 NULL 作為任意比較運算符的操作數,除< = >、IS NULL 和IS NOT NULL 運算符(它們是專門擴展來處理NULL 值的)外,將產生一個NULL 結果。如:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 如果給函數一個NULL 參數,除了那些處理NULL 參數的函數外,一般返回一個NULL結果。例如,IFNULL( ) 能夠處理NULL 參數并適當地返回真或假。STRCMP( ) 期望一個非NULL 的參數;如果它發(fā)現傳給它的是一個NULL 參數,則返回NULL 而不是真或假。在排序操作中,NULL 值被歸到一起。在升序排序中, NULL 將排在所有非NULL 值之前(包括空串),而在降序排序中,NULL 將排在所有非NULL 值之后。 ; 2.4.2 類型轉換 ; MySQL根據所執(zhí)行的操作類型,自動地進行大量的類型轉換,任何時候,只要將一個類型的值用于需要另一類型值的場合,就會進行這種轉換。下面是需要進行類型轉換的原因: ; ■ 操作數轉換為適合于某種運算符求值的類型。 ; ■ 函數參數轉換為函數所需的類型。 ; ■ 轉換某個值以便賦給一個具有不同類型的表列。下列表達式涉及類型轉換。它由加運算符“ +”和兩個操作數1和“2” 組成: ; 1+'2' ; 其中操作數的類型不同,一個是數,另一個是串,因此, MySQL對其中之一進行轉換以便使它們兩個具有相同的類型。但是應該轉換哪一個呢?因為,“+”是一個數值運算符,所以MySQL希望操作數為數,因此,將串“ 2”轉換為數2。然后求此表達式的值得出3。再舉一例。C O N C AT( ) 函數連接串產生一個更長的串作為結果。為了完成此工作,它將參數解釋為串,而不管參數實際是何類型。如果傳遞給C O N C AT( ) 幾個數,則它將把它們轉換成串,然后返回這些串的連接,如:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 如果作為表達式的組成部分調用C O N C AT( ),可能會進行進一步的類型轉換??疾煜铝斜磉_式及其結果:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 CONCAT(1, 2, 3) 產生串“12 3”。表達式“12 3”/10 轉換為12 3 / 10,因為除是一個算術運算符。這個表達式的結果的浮點形式為12 . 3,但REPEAT( ) 需要整數的重復計數值,所以進行整除得12。然后,REPEAT (‘X’, 12) 產生一個含有12個‘X’ 字符的結果串。一般原則是,MySQL盡量將值轉換為表達式所需要的類型,盡量避免由于值的類型不對而導致錯誤。根據上下文, MySQL將在三種通用類型(數、串或日期與時間)之間進行值的轉換。但是,值不能總是可以從一種類型轉為另一種類型。如果被轉換值不是給定類型的合法值,則此轉換失敗。將如“a b c” 這樣不像數的東西轉換為數,則結果為0。將不像日期或時間的東西轉換為日期或時間類型結果為該類型的“零”值。例如,將串“a b c” 轉換為日期結果為“零”日期“ 0 0 0 0 - 0 0 - 0 0”。而任何值都可以處理為串,因此,一般將某個值轉換為串不會產生問題。 ; MySQL也進行一些微小的類型轉換。如果在整型環(huán)境中使用一個浮點值,此值將被轉換,轉換時進行四舍五入。也可以進行相反的工作;一個整數用作浮點數也不會有問題。除非其內容顯示表示一個數,否則十六進制常數一般作為串處理。在串上下文中,每對十六進制數字轉換為一個字符,其結果作為串。下面是一些轉換的樣例:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 相同的解釋原理也應用到比較上;除非與其比較的是一個數,否則十六進制常量按串對待,例如:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 某些運算符可將操作數強制轉換為它們所要的類型,而不管操作數是什么類型。例如,算術運算符需要數,并按此對操作數進行轉換,參考如下運算:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 MySQL不對整個串進行尋找一個數的查找;它只查看串的起始處。如果一個串不以數作為前導部分,其轉換結果為0。Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 請注意,MySQL的串到數的轉換規(guī)則自3 . 2 3版以后已經改變了。在該版本以前,類似于數的串被轉換為四舍五入的整數值。自3.23 版后,它們轉換為浮點值,例如:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 邏輯和位運算符比算術運算符要求更為嚴格。它們不僅希望操作數為數,而且還要求是整數。這表示一個浮點數,如. 3,不被視為真,雖然它是非零的;這是因為在轉換為整數時,. 3已經轉換為0了。在下面的表達式中,除非各操作數有一個至少為1的值,否則各操作數不被認為是真。Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 這種轉換也出現在IF( ) 函數中,此函數要求第一個參數為整數。為了恰當地對浮點值進行測試,最好是利用明確的比較。否則,小于1的值將被認為是假,例如:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 模式匹配運算符要求對串進行處理。這表示可將MySQL的模式匹配運算符用于數,因為MySQL會在試圖進行的匹配中將它們轉換成串。例如:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 大小比較運算符(“<”、“< =”、“=”等等)是上下文相關的;即,它們根據操作數的類型求值。下面的表達式從數值上對操作數進行比較,因為操作符兩邊都是數。

2 < 11-> 1; ; ; 下面的表達式涉及串比較,因為其兩邊的操作數都是串: '2' < '11' -> 0 ; 在下面的比較中,類型是混合的,因此,MySQL按數比較它們。結果是兩個表達式都為真:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 在各個比較中,MySQL根據下列規(guī)則對操作數進行轉換: ; ■ 除了“< = >”運算符外,涉及NULL 值的比較其值為NULL(除NULL <=> NULL 為真外,“< = >”與“=”相同)。 ; ■ 如果兩個操作數都是串,則按串進行字典順序的比較。串比較利用服務器上有效的字符集進行。 ; ■ 如果兩個操作數都為整數,則按整數進行數的比較。 ; ■ 不與數進行比較的十六進制常量按二進制串進行比較。 ; ■ 如果其中有一個操作數為TIMES TAMP 或DATETIME 值而另一個為常量,則按TIMES TAMP 值進行比較。這樣做將使比較對ODBC 應用更好。 ; ■ 否則,兩個操作數將按浮點值進行數的比較。注意,這包括一個串與一個數進行比較的情況。其中串被轉換為數,如果該串轉換后不是一個數,則結果為0。例如,”14 . 3”轉換為14 . 3,但“L 4 . 3” 轉換為0。 ; 1. 日期與時間的解釋規(guī)則 ; MySQL按表達式的環(huán)境將串和數自由地轉換為日期和時間值,反之亦然。日期和時間值在數值上下文中轉換為數;數在日期或時間上下文中轉換為日期或時間。在將一個值賦予一個日期或時間列時,或在函數需要一個日期或時間值時,進行轉換為日期或時間值的轉換。如果表my_table 含有一個DATE 列date _ col,下列語句是等價的:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 TO _ DAYS( ) 函數的參數在下面三個表達中為相同的值:Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 2. 測試并強制進行類型轉換 ; 為了了解表達式中類型轉換是怎樣進行的,用mysql程序發(fā)布一條對表達式求值的SELECT 語句如下: Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 正如您所想像的那樣,筆者在撰寫本章時,做了不少這種比較。測試表達式的求值對于諸如DELETE 或UPDATE這種修改記錄的語句極為重要,因為需要保證只涉及所需涉及的行。檢查表達式的一個辦法是,預先執(zhí)行一條具有準備用于DELETE 或UPDATE語句的相同WHERE 子句,以驗證該子句選擇的行是正確的。假如表my_table 具有一個含有下列值的CHAR 列char _ col: Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 原來的打算大概是想刪除包含值“0 0” 的那兩行。但實際作用是刪除了所有的行。之所以這樣是由于MySQL的比較規(guī)則在起作用。char_col 為一個串列,但00 沒有用引號括起來,因此,它被作為數對待了。按MySQL的比較規(guī)則,涉及一個串與一個數的比較按兩個數的比較來求值。隨著DELETE 查詢的執(zhí)行,char_col 的每個值被轉換為0,”0 0”也被轉換為0,因此,所有不類似數的串都轉換成0。從而,對于每一行, WHERE 子句都為真,因此,DELETE 語句清空了該表。顯然,這是一種在執(zhí)行DELETE 前,應該用SELECT 語句對WHERE 子句進行測試的情況,這樣將會示出表達式所選擇的行太多了。如下所示: Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 如果不能肯定某個值的使用方式,可以利用MySQL的表達式求值機制將該值強制轉換為特定的類型: ; ■ 增加+ 0 或+ 0.0 到某項上以強制轉換到一個數值: Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換Mysql入門系列:MYSQL表達式求值和MYSQL類型轉換 3. 超范圍值或非法值的轉換 ; 超范圍值或非法值的轉換的基本原則為:無用輸入,無用輸出。如果不在存儲日期前對其進行驗證,那么可能會得到不喜歡的東西。下面給出一些MySQL處理超范圍值或不合適值的一般原則,這些內容曾經在前面介紹過: ; ■ 對于數值或T I M E列,超出合法范圍的值被剪裁為相應取值范圍的最接近的數值并作為結果值存儲。 ; ■ 對于非ENUM 或SET 的串列,太長的串被截為適合該列存儲的最大長度的串。ENUM 或SET 列的賦值依賴于定義列時給出的合法值。如果賦予ENUM 列一個未作為枚舉成員給出的值,將會賦予一個錯誤成員(即,對應于零值成員的空串)。如果賦予SET 列一個包含未作為集合成員給出的子串的值,那么,那些未作為集合成員給出的子串將被刪除,并將剩余成員構成的值賦給該列。 ; ■ 對于日期或時間列,非法值被轉換為該類型適當的“零”值(參閱表2 - 11)。對于非TIME 的日期和時間列,超出取值范圍的值可轉換為“零”值、NULL或某種其他的值(換句話說,結果是不可預料的)。 ; 這些轉換都將作為ALTER TABLE、LOAD DATA、UPDATE和多行INSERT 語句的警告信息報告。在mysql客戶機中,這些信息顯示在查詢報告的狀態(tài)行上。在編程語言中,可通過某些其他手段取得這個信息。如果使用的是MySQLC API,那么可調用mysql_info( ) 函數來獲得這個信息。對于Perl DBI API,可利用數據庫連接的mysql_info 屬性。所提供的這個信息是警告信息的次數計數。為了知道更改了哪些行,可發(fā)布一條SELECT ... INTOOUTFILE 查詢,并將結果與原始行進行比較。
標簽: MySQL 數據庫
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
亚洲中字在线| 久久精品国产秦先生| 日韩亚洲一区在线播放| 亚洲天堂偷拍| 中文精品一区二区三区| 色婷婷久久一区二区三区麻豆| 一本色道久久综合亚洲aⅴ蜜桃 | 精品国精品自拍自在线| 久久综合电影| 精品欧美一区二区三区精品久久| 最新日韩av在线| 天天综合色天天综合| 国产精品综合二区| 亚洲精品一区二区三区av| 欧美色爱综合网| 成人免费在线视频观看| 韩日精品视频一区| 国产亚洲激情| 91精品国产丝袜白色高跟鞋| 亚洲天堂福利av| 国产真实乱偷精品视频免| 欧美日韩精品久久| 在线国产电影不卡| 国产精品五月天| 久久精品国产在热久久| 欧美天天在线| 欧美日本在线播放| 一区二区三国产精华液| 成人午夜av在线| 国产麻豆日韩| 国产日韩欧美激情| 久久成人av少妇免费| 亚洲黄色毛片| 久久久久国产精品麻豆| 另类人妖一区二区av| 伊人精品视频| 精品国产第一区二区三区观看体验| 欧美网站一区二区| 国产精品天美传媒| 中文亚洲欧美| 蜜臀久久久久久久| 欧美伦理电影网| av亚洲产国偷v产偷v自拍| 国产精品护士白丝一区av| 99热这里只有精品8| 久久精品人人做人人爽电影蜜月| 欧美一区二区三区色| 亚洲va韩国va欧美va精品| 欧美激情一区二区三区在线视频| 欧美日韩国产综合一区二区三区| 亚洲人成伊人成综合网小说| 波多野洁衣一区| 91精品国产综合久久香蕉麻豆 | 中文字幕色av一区二区三区| 日本人妖一区二区| 91免费版在线| 亚洲大胆视频| 欧美一级电影网站| 在线不卡欧美精品一区二区三区| 日韩美女视频在线| 欧美性淫爽ww久久久久无| 欧美日韩天堂| 欧美日韩日日骚| 91视频一区二区三区| 卡一卡二国产精品 | 亚洲色图制服丝袜| 老司机精品视频在线| 久久99热99| 日韩高清不卡一区二区| 国产精品超碰97尤物18| 日韩免费看的电影| 欧美一卡二卡三卡| 国产日产精品1区| 秋霞午夜鲁丝一区二区老狼| 国内不卡的二区三区中文字幕| 久久久久国色av免费看影院| 色综合久久天天| 亚洲国产欧美日韩| 婷婷丁香久久五月婷婷| 国产亚洲欧美激情| 久久免费看少妇高潮| 欧美mv和日韩mv的网站| 久久精品成人| 91小宝寻花一区二区三区| 国产xxx精品视频大全| 久久精品国产亚洲aⅴ| 黄色日韩精品| 国产精品久久一卡二卡| 日本韩国欧美三级| 欧美日韩一视频区二区| 亚洲成人动漫在线免费观看| 欧美刺激脚交jootjob| 亚洲影院在线| eeuss鲁片一区二区三区在线观看| 亚洲一区二区三区四区不卡| 久久一区二区三区超碰国产精品| caoporm超碰国产精品| 舔着乳尖日韩一区| 国产亚洲美州欧州综合国| 久久一区二区三区超碰国产精品| 你懂的视频一区二区| 蜜桃视频第一区免费观看| 国产欧美日韩精品一区| 欧美日韩国产精选| 国产欧美一区二区色老头| 成人免费精品视频| 天天亚洲美女在线视频| 国产欧美日韩麻豆91| 在线电影国产精品| 免费不卡亚洲欧美| 欧美精品三区| 国产一区二区伦理片| 一区二区三区高清| 国产日韩三级在线| 制服丝袜中文字幕亚洲| 久久久夜夜夜| 99伊人成综合| 欧美精品七区| 懂色av一区二区三区免费观看| 午夜精品视频一区| 国产精品全国免费观看高清| 欧美一卡2卡3卡4卡| 可以免费看不卡的av网站| 欧美性大战久久久久| 成人动漫视频在线| 国产一区二区电影| 日本va欧美va欧美va精品| 亚洲精品高清视频在线观看| 久久奇米777| 5858s免费视频成人| 一本色道久久综合精品竹菊| 激情综合亚洲| 91麻豆高清视频| 成人久久18免费网站麻豆 | 69堂国产成人免费视频| 久久久久久黄| 中文高清一区| 在线欧美一区| 国产一区二区三区四区三区四| 成人动漫一区二区三区| 国产精品自产自拍| 麻豆91精品91久久久的内涵| 亚洲va欧美va人人爽| 一区二区三区 在线观看视频| 国产精品美女久久久久久2018| 久久综合久久综合亚洲| 在线视频观看一区| 色婷婷综合五月| 国产日韩欧美三级| 亚洲激情专区| 亚洲另类自拍| 亚洲精选在线| 亚洲人成免费| 亚洲黄色毛片| 亚洲毛片av| 一本一本久久| 国产精品亚洲欧美| 国产精品亚洲不卡a| 一区二区三区|亚洲午夜| 亚洲欧洲日夜超级视频| 一区三区视频| 一区二区欧美日韩| 亚洲一区二区三区色| 99re66热这里只有精品4| 国产自产精品| 欧美精品18| 亚洲性感激情| 一区二区国产精品| 欧美资源在线| 欧美天堂一区二区三区| 欧美少妇性性性| 欧美精品一二三区| 欧美一级在线观看| 日韩欧美国产一区二区在线播放| 欧美成人精品3d动漫h| 精品91自产拍在线观看一区| 久久久久99精品国产片| 国产精品女人毛片| 中文字幕日韩精品一区| 亚洲精品一二三| 亚洲444eee在线观看| 日韩av一级片| 国产一区二区三区高清播放| 成人免费视频播放| 91色婷婷久久久久合中文| 国产精品国产一区二区| 国产亚洲欧美一区二区| 老司机午夜精品视频在线观看| 91黄色激情网站| 91精品久久久久久久久99蜜臂| 日韩欧美你懂的| 国产校园另类小说区| 一色桃子久久精品亚洲| 综合久久综合久久| 亚洲成人资源网| 久久国产福利国产秒拍| 国产不卡视频一区二区三区| 99久久久久久| 亚洲激情网址| 久久婷婷一区|