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

首頁 > 數(shù)據(jù)庫 > SQLite > 正文

詳解SQLite中的數(shù)據(jù)類型

2020-10-29 21:49:28
字體:
供稿:網(wǎng)友

 大多數(shù) SQL 數(shù)據(jù)庫引擎 (據(jù)我們所知,除 SQLite 之外的所有 SQL 數(shù)據(jù)庫引擎)都使用嚴(yán)格的靜態(tài)類型。使用靜態(tài)類型,值的類型便由它的容器 -- 存儲值的特定的列 -- 來決定。

SQLite 使用更通用的動態(tài)類型系統(tǒng)。在 SQLit 中,值的數(shù)據(jù)類型與值本身相關(guān),而不是與它的容器。SQLite 的動態(tài)類型系統(tǒng)與其它數(shù)據(jù)庫引擎的常用靜態(tài)類型系統(tǒng)是向后兼容的,在這個意義上,工作在靜態(tài)類型數(shù)據(jù)庫上的 SQL 語句應(yīng)該以同樣的方式工作在 SQLite 中。然而,SQLite 中的動態(tài)類型允許它做傳統(tǒng)的嚴(yán)格類型的數(shù)據(jù)庫所不能做的事。

1.0 存儲類型與數(shù)據(jù)類型

存儲在 SQLite 數(shù)據(jù)庫中的每個值(或是由數(shù)據(jù)庫引擎所操作的值)都有一個以下的存儲類型:

  •     NULL. 值是空值。
  •     INTEGER. 值是有符號整數(shù),根據(jù)值的大小以1,2,3,4,6 或8字節(jié)存儲。
  •     REAL. 值是浮點數(shù),以8字節(jié) IEEE 浮點數(shù)存儲。
  •     TEXT. 值是文本字符串,使用數(shù)據(jù)庫編碼(UTF-8, UTF-16BE 或 UTF-16LE)進行存儲。
  •     BLOB. 值是一個數(shù)據(jù)塊,按它的輸入原樣存儲。

注意,存儲類型比數(shù)據(jù)類型更籠統(tǒng)。以 INTEGER 存儲類型為例,它包括6種不同的長度不等的整數(shù)類型,這在磁盤上是不同的。但是只要 INTEGER 值從磁盤讀取到內(nèi)存進行處理,它們就被轉(zhuǎn)換為更為一般的數(shù)據(jù)類型(8字節(jié)有符號整型)。因此在一般情況下,“存儲類型” 與 “數(shù)據(jù)類型” 沒什么差別,這兩個術(shù)語可以互換使用。

SQLite 版本3數(shù)據(jù)庫中的任何列,除了整型主鍵列,都可用于存儲任何存儲類型的值。

SQL 語句中的任何值,無論它們是嵌入到 SQL 語句中的字面量還是綁定到預(yù)編譯 SQL 語句中的參數(shù),都有一個隱含的存儲類型。在下述情況下,數(shù)據(jù)庫引擎會在執(zhí)行查詢時在數(shù)值存儲類型(INTEGER 和 REAL)和 TEXT 之間進行轉(zhuǎn)換。

1.1 布爾類型

SQLite 并沒有單獨的布爾存儲類型,而是將布爾值存儲為整數(shù) 0 (false) 和 1 (true)。
1.2 日期和時間類型

SQLite 沒有另外的存儲類型來存儲日期和時間。SQLite 的內(nèi)置的日期和時間函數(shù)能夠?qū)⑷掌诤蜁r間存為 TEXT、REAL 或 INTEGER 值:

  •     TEXT  ISO8601 字符串 ("YYYY-MM-DD HH:MM:SS.SSS")。
  •     REAL 儒略日數(shù) (Julian Day Numbers),按照前公歷,自格林威治時間公元前4714年11月24日中午以來的天數(shù)。
  •     INTEGER Unix 時間,自 1970-01-01 00:00:00 UTC 以來的秒數(shù)。

應(yīng)用可以選擇這些格式中的任一種存儲日期和時間,并使用內(nèi)置的日期和時間函數(shù)在這些格式間自由轉(zhuǎn)換。

2.0 類型親和性

為了最大限度地提高 SQLite 和其它數(shù)據(jù)庫引擎之間的兼容性,SQLite 支持列的“類型親和性”的概念。列的類型親和性是指數(shù)據(jù)存儲于該列的推薦類型。這里重要的思想是類型是推薦的,而不是必須的。任何列仍可以存儲任何類型的數(shù)據(jù)。這只是讓一些列有選擇性地優(yōu)先使用某種存儲類型。一個列的首選存儲類型被稱為它的“親和性”。

每個 SQLite 3 數(shù)據(jù)庫中的列都?xì)w于以下的類型親和性中的一種:

  •     TEXT
  •     NUMERIC
  •     INTEGER
  •     REAL
  •     NONE

一個具有 TEXT 親和性的列使用存儲類型 NULL、 TEXT 或 BLOB 存儲所有數(shù)據(jù)。如果數(shù)值數(shù)據(jù)被插入到一個具有 TEXT 親和性的列,則數(shù)據(jù)在存儲前被轉(zhuǎn)換為文本形式。

數(shù)值親和性的列可能包含了使用所有五個存儲類的值。當(dāng)插入文本數(shù)據(jù)到數(shù)值列時,該文本的存儲類型被轉(zhuǎn)換成整型或?qū)崝?shù)(按優(yōu)先級排序)如果這種轉(zhuǎn)換是無損或可逆的的話。對于文本與實數(shù)類型之間的轉(zhuǎn)換,如果前15個重要十進制數(shù)字被保留的話,SQLite認(rèn)為這種轉(zhuǎn)換是無損并可逆的。如果文本不能無損地轉(zhuǎn)換成整型或?qū)崝?shù),那這個值將以文本類型存儲。不要試圖轉(zhuǎn)換NULL或BLOB值。

一個字符串可能看上去像帶有小數(shù)點和/或指數(shù)符的浮點文字,但只要這個值可以用一個整型表示,數(shù)值親和性就會把它轉(zhuǎn)換成一個整型。因此,字符串‘3.0e+5'以整型300000,而不是浮點值30000.0的形式存儲在一個數(shù)值親和性的列里。


一個使用整型親和性的列與具有數(shù)值親和性的列表現(xiàn)一致。只是在CAST表達式里,它們之間的區(qū)別體現(xiàn)得明顯。

除了強制將整型值轉(zhuǎn)換成浮點表示外,一個具有實數(shù)親和性的列與具有數(shù)值親和性的列表現(xiàn)一致(作為一個內(nèi)部的優(yōu)化,為了少占用空間,無小數(shù)部分且存儲在實數(shù)親和性列上的小浮點值以整型形式寫到磁盤,讀出時自動轉(zhuǎn)換回浮點值。在SQL級別,這種優(yōu)化是完全不可見的,并且只能通過檢查數(shù)據(jù)庫文件的原始比特檢測到)。

一個具有NONE親和性的列不能從一種存儲類型轉(zhuǎn)換成另一種,也不要試圖強制對它進行轉(zhuǎn)換。

2.1 列親和性測定

列的親和性是由它的聲明類型決定的,按照以下順序所示的規(guī)則:

1. 如果聲明類型包含字符串“INT”,那它被指定為整型親和性;

2. 如果列的聲明類型包含任何“CHAR”、“CLOB”或“TEXT”字符串,那么該列具有文本親和性。注意:VARCHAR類型包含“CHAR”并且被指定為文本親和性;

3. 如果列的聲明類型包含“BLOB”或者沒有指定類型,那這列具有NONE親和性;

4. 如果列的聲明類型包含任何“REAL”、“FLOA”或“DOUB”字符串,則該列具有實數(shù)親和性;

5. 否則,它將具有數(shù)值親和性。

注意:判定列親和性規(guī)則的順序是很重要的。一個具有“CHARINT”聲明類型的列將匹配規(guī)則1和2,但是規(guī)則1優(yōu)先所有該列具有整型親和性。

2.2 親和性名字實例

下表顯示了有多少從更傳統(tǒng)的SQL實現(xiàn)的常用數(shù)據(jù)類型名,通過上一節(jié)介紹的五個規(guī)則被轉(zhuǎn)換成各種親和性類型。這張表只顯示了SQLite可接受的一小部分?jǐn)?shù)據(jù)類型名。注意:跟在類型名后,括號內(nèi)數(shù)值參數(shù)(如:VARCHAR(255))將被SQLite忽略 - SQLite不對字符串、BLOBs或數(shù)值的長度強加任何限制(除了大型全局SQLITE_MAX_LENGTH限制)。

20157392727872.jpg (571×682)

注意: 因為在“POINT”末尾的“INT”,一個“ FLOATING POINT”聲明類型 會被賦予整型親和性,而不是實數(shù)親和性。而且“STRING”聲明類型具有數(shù)值親和性,而不是文本親和性。

2.3 列親和性行為實例

以下SQL演示當(dāng)有值插入到一張表時,SQLite如何使用列親和性實現(xiàn)類型轉(zhuǎn)換的:
 

CREATE TABLE t1(  t TEXT,   -- text affinity by rule 2  nu NUMERIC, -- numeric affinity by rule 5  i INTEGER, -- integer affinity by rule 1  r REAL,   -- real affinity by rule 4  no BLOB   -- no affinity by rule 3);

 

-- Values stored as TEXT, INTEGER, INTEGER, REAL, TEXT.(值分別以文本、整型、整型、實數(shù)、文本形式存儲)INSERT INTO t1 VALUES('500.0', '500.0', '500.0', '500.0', '500.0');SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;text|integer|integer|real|text -- Values stored as TEXT, INTEGER, INTEGER, REAL, REAL.DELETE FROM t1;INSERT INTO t1 VALUES(500.0, 500.0, 500.0, 500.0, 500.0);SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;text|integer|integer|real|real -- Values stored as TEXT, INTEGER, INTEGER, REAL, INTEGER.DELETE FROM t1;INSERT INTO t1 VALUES(500, 500, 500, 500, 500);SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;text|integer|integer|real|integer -- BLOBs are always stored as BLOBs regardless of column affinity. DELETE FROM t1;INSERT INTO t1 VALUES(x'0500', x'0500', x'0500', x'0500', x'0500');SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;blob|blob|blob|blob|blob -- NULLs are also unaffected by affinityDELETE FROM t1;INSERT INTO t1 VALUES(NULL,NULL,NULL,NULL,NULL);SELECT typeof(t), typeof(nu), typeof(i), typeof(r), typeof(no) FROM t1;null|null|null|null|null

3.0 比較表達式

同標(biāo)準(zhǔn)SQL一樣,SQLite 3支持如下的比較操作符:"=", "==", "<", "<=", ">", ">=", "!=", "<>", "IN", "NOT IN", "BETWEEN", "IS", 以及 "IS NOT"。
3.1 排序規(guī)則

比較的結(jié)果與操作數(shù)的存儲類型有關(guān),同時依據(jù)以下的規(guī)則:

  •     NULL值小于其他任何值(包括另外一個NULL)
  •     INTEGER或REAL小于TEXT,BLOB值;若兩個INTEGER(或者REAL)比較,則按照實際的數(shù)值進行。
  •     TEXT小于BLOB,若兩個TEXT比較,結(jié)果則由適當(dāng)?shù)恼眄樞驔Q定
  •     若兩個BLOD比較,與memcmp()的結(jié)果一致


3.2 操作數(shù)進行比較時的相似性

在進行值的比較之前,SQLite會嘗試在存儲類INTEGER、REAL和/或TEXT之間進行值的轉(zhuǎn)換。在比較之前嘗不嘗試進行轉(zhuǎn)換完全取決于操作數(shù)的相似性。操作數(shù)相似性的判定規(guī)則如下:

  •     只是對一個列中的值進行引用的表達式同被引用的列具有完全相同的相似性。注意,如果X、Y.Z代表的是列的名稱,那么+X和+Y.Z可以認(rèn)為是為了判定其相似性的表達式。
  •     "CAST(expr AS type)"所表示的表達式同類型定義為"type"的列具有完全相同的相似性。
  •     其它情況下的表達式具有NONE相似性。


3.3 比較前的類型轉(zhuǎn)換

“應(yīng)用相似性”("apply affinity")的意思是,當(dāng)且僅當(dāng)所涉及的轉(zhuǎn)換是無損且可逆的情況下,將一個操作數(shù)轉(zhuǎn)換為某特定的存儲類型。在進行比較之前對比較運算符的操作數(shù)應(yīng)用相似性的規(guī)則如下按順序所示:

  •     如果其中的一個操作數(shù)具有INTEGER、REAL或者NUMERIC相似性而另外一個操作數(shù)具有TEXT或者NONE相似性,那么就要對這另外一個操作數(shù)應(yīng)用NUMERIC 相似性。
  •     如果其中的一個操作數(shù)具有TEXT相似性而另外一個具有NONE相似性,那么就要對這另外一個操作數(shù)應(yīng)用TEXT相似性。
  •     其它情況下不會應(yīng)用任何相似性,兩個操作數(shù)按照各自的原樣進行比較。

將表達式"a BETWEEN b AND c"看作兩個單獨的二元比較運算"a >= b AND a <= c",即使這么一來,可能會造成其中的a在兩次比較中會被應(yīng)用不同的相似性,也要這么處理。Datatype conversions in comparisons of the form 在"x IN (SELECT y ...)"這種形式的比較中,數(shù)據(jù)類型的轉(zhuǎn)換完全同"x=y"一樣進行處理。表達式"a IN (x, y, z, ...)" 同"a = +x OR a = +y OR a = +z OR ..."等價。換句話說,IN運算符右側(cè)的值(本例中就是"x", "y", and "z")被看作是無相似性的,即使它們湊巧是某列的值或者是CAST表達式。

3.4 比較示例
 

CREATE TABLE t1(  a TEXT,   -- text affinity  b NUMERIC,  -- numeric affinity  c BLOB,   -- no affinity  d      -- no affinity); -- Values will be stored as TEXT, INTEGER, TEXT, and INTEGER respectivelyINSERT INTO t1 VALUES('500', '500', '500', 500);SELECT typeof(a), typeof(b), typeof(c), typeof(d) FROM t1;text|integer|text|integer -- Because column "a" has text affinity, numeric values on the-- right-hand side of the comparisons are converted to text before-- the comparison occurs.SELECT a < 40,  a < 60,  a < 600 FROM t1;0|1|1 -- Text affinity is applied to the right-hand operands but since-- they are already TEXT this is a no-op; no conversions occur.SELECT a < '40', a < '60', a < '600' FROM t1;0|1|1 -- Column "b" has numeric affinity and so numeric affinity is applied-- to the operands on the right. Since the operands are already numeric,-- the application of affinity is a no-op; no conversions occur. All-- values are compared numerically.SELECT b < 40,  b < 60,  b < 600 FROM t1;0|0|1 -- Numeric affinity is applied to operands on the right, converting them-- from text to integers. Then a numeric comparison occurs.SELECT b < '40', b < '60', b < '600' FROM t1;0|0|1 -- No affinity conversions occur. Right-hand side values all have-- storage class INTEGER which are always less than the TEXT values-- on the left.SELECT c < 40,  c < 60,  c < 600 FROM t1;0|0|0 -- No affinity conversions occur. Values are compared as TEXT.SELECT c < '40', c < '60', c < '600' FROM t1;0|1|1 -- No affinity conversions occur. Right-hand side values all have-- storage class INTEGER which compare numerically with the INTEGER-- values on the left.SELECT d < 40,  d < 60,  d < 600 FROM t1;0|0|1 -- No affinity conversions occur. INTEGER values on the left are-- always less than TEXT values on the right.SELECT d < '40', d < '60', d < '600' FROM t1;1|1|1

若示例中的比較被替換――例如"a<40"被寫作"40>a"――所有的結(jié)果依然相同相同。
4.0 操作符

所有的數(shù)學(xué)運算符(+, -, *, /, %, <<, >>, &, and |)在展開前會將兩個操作數(shù)放入 NUMERIC 儲存類。即使這個過程是有損和不可逆轉(zhuǎn)的。一個 NULL 操作數(shù)在數(shù)學(xué)運算符上產(chǎn)生一個 NULL 結(jié)果。在數(shù)算運算符上的操作數(shù)不被視為數(shù)字,NULL 并不會被轉(zhuǎn)為0或0.0。

5.0 排序, 分組 和 組合查詢

當(dāng)查詢結(jié)果使用 ORDER BY 子句排序時, 存儲類型的NULL空值是排在第一位的, 其次是INTEGER和散布在數(shù)字順序的REAL數(shù)據(jù), 其次是按照核對序列順序的TEXT值, 最后為memcmp() order 的BLOB值. 排序之前不會出現(xiàn)任何存儲類型轉(zhuǎn)換.

當(dāng)使用GROUP BY 子句分組時不同類型的值被認(rèn)為是不同的數(shù)據(jù), 除了INTEGER 和 REAL 值如果他們數(shù)值相等則被認(rèn)為是相同的的數(shù)據(jù). 沒有任何親和性適用于GROUP BY 子句結(jié)果的任意值.

組合查詢使用 UNION, INTERSECT 和 EXCEPT 在數(shù)據(jù)之間執(zhí)行隱式的比較. 沒有任何親和性適用于與UNION, INTERSECT, 或者 EXCEPT關(guān)聯(lián)的隱式比較的運算數(shù)  - 數(shù)據(jù)的比較就像這樣.

6.0 整理序列

當(dāng) SQLite 比較兩個字符串時,它使用一個整理序列或整理函數(shù)(一物兩表)來決定當(dāng)兩個字符串相同時,哪個字符串值更高。SQLite 擁有三個內(nèi)建整理函數(shù):BINARY, NOCASE, 和 RTRIM。

  •     BINARY - 使用 memcmp() 比較字符串,無視文本編碼。
  •     NOCASE - 與二進制比較相同,除了 ASCII 的26個大寫字母在比較前將會轉(zhuǎn)為其小寫形勢。注意,只有 ASCII 字符會大小寫轉(zhuǎn)化。 由于表大小的需求,SQLite 并不會嘗試 UTF 大小寫轉(zhuǎn)化。
  •     RTRIM - 與二進制比較相同,除了尾部空格符將被忽略。

應(yīng)用可以通過 sqlite3_create_collation() 接口注冊額外的整理函數(shù)。

6.1 設(shè)定SQL中的排列順序

每個表中的每一個列都具有一個相關(guān)的排序函數(shù)。如果沒有顯式地定義排序函數(shù),那么,就會缺省使用BINARY作為排序函數(shù)。列定義中的COLLATE子句可為列定義一個可選的排序函數(shù)。

對于二元比較運算符(=, <, >, <=, >=, !=, IS, and IS NOT)來說,判定到底使用哪個排序函數(shù)的規(guī)則按順序如下所列:

  •     如果兩個操作數(shù)中有任意一個操作數(shù)具有使用后綴COLLATE運算符顯式定義的排序函數(shù),那么就會用該函數(shù)進行比較,如果兩個操作數(shù)都有的情況下,優(yōu)先使用左操作數(shù)的排序函數(shù)。
  •     如果兩個操作數(shù)中任意一個操作數(shù)是一個列,那么就會使用該列的排序函數(shù)進行比較,但在兩個操作數(shù)都是列的情況下,優(yōu)先使用左操作數(shù)對應(yīng)的列的排序函數(shù)。為了達到這句話的目的,列名前帶有1個或多個一元運算符"+"的,仍然按原列名處理。
  •     其它情況下,采用BINARY排序函數(shù)進行比較。

比較運算中的操作數(shù),如果在它的任何子表達式中使用了后綴 COLLATE運算符,就可以認(rèn)為是具有顯式的排序函數(shù)(上文中的規(guī)則1)。 再者,如果在比較表達式中的任何地方使用了 COLLATE運算符,那么該運算符所定義的排序函數(shù)就會用于字符串的比較,而無論在表達式中出現(xiàn)了表中的哪一列。如果在比較中的任何地方出現(xiàn)了兩個或多個 COLLATE運算符子表達式,無論在表達式中嵌入得多深,也無論表達式是怎么使用括號的,都會使用出現(xiàn)在最左側(cè)的顯式排序函數(shù)。

表達式"x BETWEEN y and z"從邏輯上講,同"x >= y AND x <= z"這兩個比較運算完全等價,在使用排序函數(shù)時它們倆要象兩個本來就是獨立的比較運算一樣進行處理。在判定排列順序時,表達式"x IN (SELECT y ...)"處理方式完全同表達式"x = y"一樣,形如"x IN (y, z, ...)"的表達式,排列順序完全同X的排列順序一樣。

作為 SELECT語句的一個部分,ORDER BY子句中排序條件也可以通過使用COLLATE運算符設(shè)定排列順序,如果設(shè)定了排序時就要按照設(shè)定的排序函數(shù)進行排序。否則,如果ORDER BY子句使用的排序表達式是一個列,那么該列的排列順序就用于判定排列順序。如果該排序表達式不是列并且也無COLLATE子句,就會使用BINARY排列順序。

6.2 整理序列示例

下面的示例將識別整理序列,決定 SQL 語句的文本比較結(jié)果。注意,在文本比較時,如果是數(shù)字,二進制或Null值,整理序列可能并沒有被使用。
 

CREATE TABLE t1(  x INTEGER PRIMARY KEY,  a,         /* collating sequence BINARY */  b COLLATE BINARY, /* collating sequence BINARY */  c COLLATE RTRIM,  /* collating sequence RTRIM */  d COLLATE NOCASE  /* collating sequence NOCASE */);          /* x  a   b   c    d */INSERT INTO t1 VALUES(1,'abc','abc', 'abc ','abc');INSERT INTO t1 VALUES(2,'abc','abc', 'abc', 'ABC');INSERT INTO t1 VALUES(3,'abc','abc', 'abc ', 'Abc');INSERT INTO t1 VALUES(4,'abc','abc ','ABC', 'abc'); /* a=b 的文本比較表現(xiàn)為使用 BINARY (二進制)整理序列。 */SELECT x FROM t1 WHERE a = b ORDER BY x;--結(jié)果 1 2 3 /* a=b 的文本比較表現(xiàn)為使用 RTRIM 整理序列。 */SELECT x FROM t1 WHERE a = b COLLATE RTRIM ORDER BY x;--結(jié)果 1 2 3 4 /* d=a 的文本比較表現(xiàn)為使用 NOCASE 整理序列。 */SELECT x FROM t1 WHERE d = a ORDER BY x;--結(jié)果 1 2 3 4 /* a=d 的文本比較表現(xiàn)為使用 BINARY (二進制)整理序列。 */SELECT x FROM t1 WHERE a = d ORDER BY x;--結(jié)果 1 4 /* 'abc'=c 的文本比較表現(xiàn)為使用 RTRIM (二進制)整理序列。 */SELECT x FROM t1 WHERE 'abc' = c ORDER BY x;--結(jié)果 1 2 3 /* c='abc' 的文本比較表現(xiàn)為使用 RTRIM 整理序列。 */SELECT x FROM t1 WHERE c = 'abc' ORDER BY x;--結(jié)果 1 2 3 /* 分組表現(xiàn)為使用 NOCASE 整理序列(值'abc','ABC' 和 'Abc'** 被分為同一組)。*/SELECT count(*) FROM t1 GROUP BY d ORDER BY 1;--結(jié)果 4 /* 分組表現(xiàn)為使用 BINARY 整理序列(值'abc','ABC' 和 'Abc'** 被分為不同的組)。*/SELECT count(*) FROM t1 GROUP BY (d || '') ORDER BY 1;--結(jié)果 1 1 2 /* 列c排序表現(xiàn)為使用 RTRIM 整理序列。*/(譯注:sorting or column c 疑為 sorting of...誤寫)SELECT x FROM t1 ORDER BY c, x;--結(jié)果 4 1 2 3 /* (c||'')排序表現(xiàn)為使用 BINARY 整理序列。*/SELECT x FROM t1 ORDER BY (c||''), x;--結(jié)果 4 2 3 1 /* 列c排序表現(xiàn)為使用 NOCASE 整理序列。*/SELECT x FROM t1 ORDER BY c COLLATE NOCASE, x;--結(jié)果 2 4 3 1

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
一区二区三区四区电影| 麻豆视频成人| 亚洲男人天堂av| 中文字幕无人区二| 国产裸体永久免费无遮挡| 国内精品久久影院| 日韩精品免费一区二区在线观看| 国产色综合天天综合网| 国产一区二区久久久| 91在线看视频| 91香蕉视频免费在线观看| 男人天堂a在线| 婷婷激情在线| 性色av一区二区三区免费| 亚洲伊人影院| 韩国美女主播一区| 精品在线99| 日本精品一区二区三区四区| www在线播放| 久久免费观看视频| 黑人极品ⅴideos精品欧美棵| 人妻体内射精一区二区| 国产 欧美 日本| 青青草手机视频在线观看| 羞羞视频网站在线观看| 国内精品卡一卡二卡三| 大陆一级毛片免费观看| 国产精品福利网站| 一本色道久久综合亚洲精品不| 一区中文字幕电影| 久久欧美中文字幕| 一级在线免费观看| 三上悠亚av一区二区三区| 91麻豆精品国产| www.国产精品| 麻豆国产精品一区二区三区| 国产在线观看av| 2020日本不卡一区二区视频| 国产精品中文字幕一区二区三区| 欧美一区二区三区| 欧美成人一区二区视频| 国产精品成人无码免费| 久久99精品国产99久久| 免费在线观看av片| 日韩美女在线看免费观看| 99视频在线精品国自产拍免费观看| www.国产在线视频| 欧美先锋资源| 日韩av在线影院| 日日悠悠久久| 亚洲成人一区二区三区| 日韩hd视频在线观看| av中文字幕不卡| wwwww在线观看免费视频| 欧美日韩午夜视频| 成人福利在线观看视频| 欧美日韩女优| 欧美日韩综合在线免费观看| 无码人妻精品一区二区三区9厂| 乱小说综合网站| 92福利视频午夜1000合集在线观看| 亚洲一区在线观看免费| 91夜夜蜜桃臀一区二区三区| 一本到高清视频免费精品| 综合蜜桃精品| 日韩久久不卡| 日韩极品一区| 国产成人精品在线视频| 午夜精品一区二区三区国产| 四虎一区二区| 秋霞蜜臀av久久电影网免费| 亚洲不卡视频在线观看| 涩涩视频在线观看下载| 国产农村妇女毛片精品久久| 在线影院自拍| 好操啊在线观看免费视频| 国产.精品.日韩.另类.中文.在线.播放| 卡通动漫国产精品| 国产午夜久久久久| 国产写真视频在线观看| 天天操天天操天天干| 夜夜操 天天操| 亚洲成人精品久久久| 不卡电影免费在线播放一区| 亚洲黄色小说在线观看| 就去色蜜桃综合| 麻豆精品在线视频| 日韩高清影视在线观看| 婷婷久久五月天| 搞黄网站在线看| 香蕉视频成人在线观看| 久久黄色影院| bbbbbbbbbbb在线视频| 亚洲欧美激情在线| 久久综合入口| 亚洲精品国产成人影院| 又黄又免费的视频| 美乳视频一区二区| 亚洲日本va在线观看| 亚洲国产精品美女| 亚洲免费看黄网站| 国产真实乱偷精品视频| 国产一区二区在线观看免费视频| www.26天天久久天堂| 91综合免费在线| 欧美一区二区三区四区五区六区| 日韩精品一区二区三区在线观看| 亚洲第一论坛sis| 婷婷亚洲久悠悠色悠在线播放| 日日天天久久| 色94色欧美sute亚洲线路二| 久久不射中文字幕| www.国产亚洲| 亚洲第一色中文字幕| zzzwww在线看片免费| www.亚洲天堂.com| 亚洲毛片欧洲毛片国产一品色| 一区三区在线欧| 免费人成视频在线播放| 亚洲一区二区三区四区电影| 五月网丁香网| 国产xxxx视频| 欧美女孩性生活视频| 国产视频2区| 在线一区二区视频| 蜜臀久久99精品久久久久久9| 香蕉视频在线网站| 蜜桃av一区二区三区| 国产青青草在线| 国产污污视频在线观看| 在线观看v片| 一个人免费观看在线视频www| 欧美日韩一区二区高清| 国产成人精品午夜视频免费| 国产综合色精品一区二区三区| 国内精品美女av在线播放| 国产三级日本三级在线播放| 国产精品suv一区二区88| 成人sese在线| 欧美日韩综合在线观看| 日韩欧美激情在线| 乱一区二区三区在线播放| 伊人久久精品一区二区三区| 欧美日韩一级在线| 在线中文字幕一区| 国产精品秘入口| 亚洲二区免费| 国产激情一区二区三区| 国产三级精品在线不卡| 色综合久久综合中文综合网| 日日夜夜免费精品视频| 国产91色在线免费| 免费看国产黄色片| 美女久久久久久久| 日韩深夜视频| 国产最顶级的黄色片在线免费观看| 成年网站在线看| 精品成人免费一区二区在线播放| 国产精品国产三级国产三级人妇| 亚洲欧洲在线观看av| 成人免费黄色小视频| 一区两区小视频| 人妻体内射精一区二区| 2018国产在线| www.91av| 国产香蕉成人综合精品视频| 久久不射电影网| 波多野结衣免费观看| 91看片在线| 国产成人亚洲综合a∨猫咪| 成人av资源在线观看| 久久9精品区-无套内射无码| 免费成年网站| 曰韩少妇与小伙激情| 国产精品久久久久77777| 成人美女大片| 国产精品久久久久久亚洲影视| 天堂网www在线观看| 亚洲一区二区三区中文字幕| 亚洲精品555| 欧美日韩一卡二卡三卡| 久久免费美女视频| 伊人色综合久久天天五月婷| 亚洲精品成人| 精品国产一区二区三区四区阿崩| 人人玩人人添人人澡免费| 精品影片在线观看的网站| 日本人妻一区二区三区| 肥熟一91porny丨九色丨| 91精品欧美一区二区三区综合在| 日韩精品久久久毛片一区二区| 日本人dh亚洲人ⅹxx| 影音先锋电影在线观看| 女女百合国产免费网站| 色欲狠狠躁天天躁无码中文字幕| 日韩av在线一区| 日韩精品国产一区| 午夜在线观看视频18| 97久久人人超碰caoprom欧美| 日本视频一区二区| 亚洲欧洲成人自拍| 欧美日韩免费区域视频在线观看| 国产一区二区三区国产| 日日干夜夜草| 大乳护士喂奶hd| 91超碰国产精品| 精品福利免费观看| 日韩黄色一级片| 日韩精品一区二区三| 日本一区二区免费高清| 国产精品视频久久久| 免费观看的av网站| 日韩女优制服丝袜电影| 亚洲风情在线资源站| 国产精品99久久99久久久二8| 神马午夜一区二区| 一区二区三区av在线| 国产剧情在线观看一区二区| 久草国产在线观看| 香港日本韩国三级网站| 欧美91大片| 亚洲欧美综合乱码精品成人网| 亚洲欧洲一区二区| 日韩欧美在线影院| 成人性生活视频| 在线观看亚洲区| 黄色一区二区在线| 日本久久一级片| 一呦二呦三呦精品国产| 精品欧美国产| 国产精品一区视频网站| 欧美日韩aaaa| 99视频在线免费播放| 91免费在线看| 成人黄色午夜影院| 成人在色线视频在线观看免费大全| 欧美午夜性生活| 成人免费视频网站在线观看| 无套内谢的新婚少妇国语播放| 精品深夜av无码一区二区老年| 韩国三级与黑人| 国产精品流白浆在线观看| 麻豆一二三区精品蜜桃| 国产综合色一区二区三区| 激情伊人五月天久久综合| 亚洲欧美精品中文字幕在线| av不卡一区| 亚洲电影中文字幕| 天天影视色香欲综合网老头| 成人激情视频在线观看| 免费日韩在线视频| 成人精品一区二区三区免费| 99久久精品网站| 日本韩国在线视频爽| 成人午夜888| 亚洲人成电影网| 亚洲综合在线不卡| 国产精品激情偷乱一区二区∴| 麻豆电影传媒二区| 香蕉视频免费在线| av鲁丝一区鲁丝二区鲁丝三区| 久久夜色精品亚洲噜噜国产mv| 超碰高清在线| 亚洲av人无码激艳猛片服务器| 日韩欧美在线1卡| 中文字幕在线免费观看视频| 91成人超碰| 天堂√最新版中文在线| 国产麻豆免费观看| 久久午夜视频| 欧美大黄免费观看| 深夜精品寂寞黄网站在线观看| 久久久久久久久免费| 高清欧美性猛交xxxx| 黄网站免费看| 26uuu色噜噜精品一区| 亚洲精品乱码久久久久久9色| 国产成人精品久久二区二区91| 一区免费观看| 国产不卡精品| 国产精品久久久久久在线| 亚洲一卡二卡三卡四卡| 成年人在线视频免费观看| 在线视频专区| 欧美另类69xxx| 欧美黑人性猛交| 电影在线一区| 狠狠一区二区三区| 久久在线观看免费| 日日摸日日添日日躁av| 日本一区二区不卡高清更新| 色天天色综合| 国产精品理人伦一区二区三区| 亚洲视频999| 日韩欧美色综合网站| 91亚洲精品丁香在线观看| 免费福利电影| 99re视频精品| 国产性一乱一性一伧一色| 91豆花视频在线播放| 亚洲国产中文字幕在线视频综合| 天堂av中文在线资源库| 葵司免费一区二区三区四区五区| 欧美77777| 久久久久久久久久久久久久一区| 国产精品三级电影| 中文字幕不卡三区| 亚洲自拍欧美另类| 成人网18免费网站| 欧美多人乱p欧美4p久久| 在线电影欧美日韩一区二区私密| 久久久久久久久久久久久久久久久久久| 久久久久精彩视频| 女人高潮被爽到呻吟在线观看| 羞羞网站在线| 国产专区综合网| 国产少妇在线观看| 97成人超碰| 91黄色免费观看| 嫩草影院在线观看未满十八| 久久久久久有精品国产| 蜜桃视频第一区免费观看| 亚洲熟女综合色一区二区三区| 污视频在线免费观看网站| 国产伦精品一区二区三| 国产蜜臀97一区二区三区| 日韩中文字幕在线免费| 99久久99久久精品国产片|