精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊Insert ... On Duplicate Key Update 和ReplaceInto有什么區別

數據庫 MySQL
insert ... on duplicate key update 和 replace into 執行成功之后返回的影響行數,是個比較小的主題,我們先說結論,然后再分析這兩種 SQL 執行過程中計算影響行數的邏輯。

前段時間和滴滴的一位同學聊到 insert ... on duplicate key update 插入一條記錄成功后,影響行數為 2 意味著什么?

以前沒有深挖過這里面的細節,最近幾天抽空翻了翻源碼,可以來扒一扒這背后的細節了。對了,insert ... on duplicate key update 還有個兄弟叫 replace into,一起帶飛吧。

為了方便描述,本文后面會用 insert duplicate 表示 insert ... on duplicate key update。

本文內容基于 MySQL 5.7.35 源碼。

1、 準備工作

示例表結構及插入初始化數據 SQL 如下:

CREATE TABLE `t_insert` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`i1` int(11) NOT NULL DEFAULT '0',
`i2` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `idx_i1` (`i1`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

insert into t_insert(i1, i2) values
(101, 201),
(102, 202),
(103, 203),
(104, 204),
(105, 205)

2、先說結論

insert ... on duplicate key update 和 replace into 執行成功之后返回的影響行數,是個比較小的主題,我們先說結論,然后再分析這兩種 SQL 執行過程中計算影響行數的邏輯。

對執行過程細節不感興趣的朋友,直接看本小節就好,可以不需要看第 3 小節的執行過程分析了。

在源碼實現中,批量插入和單條插入記錄沒什么區別,批量插入實際上是循環執行單條插入。所以,結論和執行過程分析兩小節,都基于插入單條記錄進行分析。

(1) insert ... on duplicate key update

insert duplicate 語句,插入一條記錄,影響行數可能有 3 種取值:0、1、2,影響行數 = 插入行數 + 更新行數。

影響行數 = 1,表示插入記錄和表中記錄不存在主鍵或唯一索引沖突,插入操作可以直接成功。影響行數 = 插入行數(1) + 更新行數(0) = 1。

影響行數 = 0,表示插入記錄和表中記錄存在主鍵或唯一索引沖突,并且 insert duplicate 語句 update 字段列表中每個字段的字段值和沖突記錄中對應的字段值一樣。

update 字段列表

以 t_insert 表為例,i1 字段上有唯一索引,表中記錄如下:

示例 SQL 如下:

insert into t_insert(i1, i2)
values (105, 999)
on duplicate key update i2 = 205

示例 SQL 中,update i2 字段值和表中 i1 = 105 的記錄的 i2 字段值一樣。示例 SQL 既不會更新表中記錄,也不會往表中插入記錄。影響行數 = 插入行數(0) + 更新行數(0) = 0。

影響行數 = 2,表示插入記錄和表中記錄存在主鍵或唯一索引沖突,但是 insert duplicate 語句 update 字段列表中的字段值和沖突記錄中的字段值不一樣,插入語句會更新表中沖突的第 1 條記錄。

因為表中主鍵 + 唯一索引可能存在多個,插入一條記錄,該記錄中的多個字段可能和多條不同記錄存在沖突,這種情況下,insert duplicate 只會更新沖突的第 1 條記錄。

以 t_insert 表為例,i1 字段上有唯一索引,表中記錄如下:

示例 SQL 如下:

-- i2 = 999 也可以寫成 i2 = values(i2)
insert into t_insert(i1, i2)
values (105, 999)
on duplicate key update i2 = 999

示例 SQL 中,update 字段列表中的 i2 字段值和表中 i1 = 105 的記錄的 i2 字段值(205)不一樣。

SQL 執行過程中,會把 i1 = 105 的記錄中的 i2 字段值更新為 999,執行結果為插入成功。插入行數加 1,但這個插入成功實際上是修改了表中已有記錄,修改行數也要加 1。影響行數 = 插入行數(1) + 更新行數(1) = 2。

(2) replace into

replace into 語句,插入一條記錄,影響行數可能的取值有兩種:1、N(大于 1)。影響行數 = 插入行數 + 刪除行數。

影響行數 = 1,表示插入記錄和表中記錄不存在主鍵或唯一索引沖突,插入操作可以直接成功。影響行數 = 插入行數(1) + 刪除行數(0) = 1。

影響行數 = N,表示插入記錄和表中的 N - 1 條記錄存在主鍵或唯一索引沖突,插入成功之前,會刪除這 N - 1 條沖突記錄。影響行數 = 插入行數(1) + 刪除行數(N - 1) = N。

主鍵和唯一索引中都不允許存在重復記錄,為什么 replace into 語句插入一條記錄會和表中多條記錄存在沖突?

因為一個表中,主鍵 + 唯一索引可能有多個,插入記錄中不同字段可能會和不同的記錄產生沖突。

以 t_insert 表為例,id 為主鍵字段,i1 字段上有唯一索引。t_insert 表中記錄如下:

示例 SQL 如下:

replace into t_insert(id, i1, i2)
values (4, 105, 888)

示例 SQL 中,待插入記錄的 id = 4,和主鍵沖突;待插入記錄的 i1 = 105,和 i1 字段上的唯一索引沖突。

replace into 語句執行過程中,會刪除 id = 4 和 i1 = 105 的兩條記錄,插入 id = 4、i1 = 105、i2 = 888 這條記錄。

也就是先刪除 2 條記錄,再插入 1 條記錄,影響行數 = 插入行數(1) + 刪除行數(2) = 3。

插入之后表中數據如下:

3、 執行過程分析

(1) insert ... on duplicate key update

insert duplicate 語句是 MySQL 對 SQL 標準的擴展,它有 2 種行為:

  • 如果插入記錄和表中記錄不存在主鍵或唯一索引沖突,它和普通插入語句一樣。
  • 如果插入記錄和表中記錄存在主鍵或唯一索引沖突,它不會插入失敗,而是會用 update 字段列表中的字段值更新沖突記錄對應的字段。

update 字段列表

insert duplicate 語句的影響行數,保存在 Statistics 類的實例屬性 copied 和 updated 中,計算公式:影響行數 = copied + updated。

copied 表示插入行數,updated 表示更新行數。

接下來,我們來看看 insert duplicate 語句的執行過程。

insert duplicate 執行流程圖

第 1 步,調用插入記錄方法,如果插入成功,插入操作主流程就完成了,不需要執行第 2 ~ 4 步。影響行數 = copied(1) + updated(0) = 1。

第 2 步,如果因為主鍵或唯一索引沖突導致插入失敗,MySQL 會找到是因為哪一個索引沖突造成的,然后構造由這個索引的所有字段組成的查詢條件,去存儲引擎讀取沖突的記錄,讀取出來的這條記錄叫作舊記錄。

第 3 步,用 insert duplicate 語句 update 字段列表中的字段值替換舊記錄中對應字段的值后得到新記錄。

第 4 步,判斷新記錄和舊記錄的內容是否完全一樣。

如果完全一樣,就不需要進行更新操作,影響行數 = copied(0) + updated(0) = 0。

如果不完全一樣,調用更新記錄方法,把新記錄各字段的值更新到表中,影響行數 = copied(1) + updated(1) = 2。

有一點需要注意,如果待插入記錄和表中多條記錄存在主鍵或唯一索引沖突,insert duplicate 只會更新沖突的第 1 條記錄。哪個索引報記錄沖突,就更新這個索引中沖突的這條記錄。

(2) replace into

replace into 語句也是對標準 SQL 的擴展,它也有 2 種行為:

  • 如果插入記錄和表中記錄不存在主鍵或唯一索引沖突,它和普通插入語句一樣。
  • 如果插入記錄和表中記錄存在主鍵或唯一索引沖突,它會先刪除表中的沖突記錄,然后插入新記錄,這很符合 replace into 語句替換的語義。

除了先刪除再插入,還有另一種方式:用 replace into 語句 values() 中各字段的值更新表中的沖突記錄。不過,要使用這種方式,需要滿足一些條件,后面會詳細說。

replace into 語句的影響行數,保存在 Statistics 類的實例屬性 copied 和 deleted 中,計算公式:影響行數 = copied + deleted。

copied 表示插入行數,deleted 表示刪除行數。

接下來,我們來看一下 replace into 語句的執行過程:

replace into 執行流程圖

第 1 步,調用插入記錄方法,如果插入成功,插入操作主流程就完成了,不需要執行第 2 ~ 3 步。影響行數 = copied(1) + deleted(0) = 1。

這一步和 insert duplicate 語句是一樣的,因為它們倆在這一步執行的是同一行代碼,兄弟倆還沒有分家。

第 2 步,如果因為主鍵或唯一索引沖突導致插入失敗,MySQL 會找到是因為哪一個索引沖突造成的,然后構造由這個索引的所有字段組成的查詢條件,從存儲引擎讀取沖突的記錄,讀取出來的這條記錄叫作舊記錄。

舊記錄用于第 3 步中刪除沖突記錄,以及判斷需要把插入記錄中的哪些字段更新到表中。

這一步和 insert duplicate 語句也是一樣的,因為在這一步它們執行的是同一段代碼,兄弟倆還沒有分家。

第 3 步,從這一步開始,replace into 和 insert duplicate 的邏輯就不一樣了。

在這一步,MySQL 會根據一些條件判斷是用更新舊記錄,還是刪除舊記錄,插入新記錄的方式來實現 replace into 操作。

使用更新舊記錄方式,如果能夠使用這種方式實現 replace into,說明插入記錄只和表中的一條記錄沖突,把待插入記錄各字段的值更新到舊記錄中,增加 deleted 計數,replace into 主流程就完成了。

因為 replace into 的語義是替換,也就是刪除舊記錄,插入新記錄,所以,雖然這里用的是更新舊記錄的方式,但計數還是用了 deleted 而不是 updated。

使用刪除舊記錄,插入新記錄方式,第 1 ~ 3 步是一個循環,在第 3 步會直接把沖突的第一條記錄刪除,然后再回到第 1 步執行插入操作,循環執行第 1~ 3 步,直到刪除了所有沖突記錄之后,插入才能夠成功。

如果多次執行第 3 步,每次執行時,deleted 計數都會加 1。

第 4 步,增加 copied 計數,copied 值由 0 變為 1。

如果第 3 步使用更新舊記錄方式實現,影響行數 = copied(1) + deleted(1) = 2。

如果第 3 步使用刪除舊記錄,插入新記錄方式實現,第 3 步有可能會多次執行,執行幾次,deleted 值就是幾,影響行數 = copied(1) + deleted(N) = 1 + N。

其中,N 表示第 3 步的執行次數。

執行流程中還有一個邏輯沒有說,就是第 3 步中,怎么決定使用更新舊記錄方式還是刪除舊記錄,插入新記錄方式。

使用更新舊記錄方式,需要同時滿足 3 個條件:

條件 1,第 2 步中報記錄沖突的那個索引是表中最后創建的唯一索引(也可能是主鍵)。

條件 2,表中的所有字段,都沒有被其它表的字段作為外鍵約束。

條件 3,表上沒有定義過刪除觸發器。

外鍵約束和刪除觸發器都很少使用,不展開講了。

4、 總結

先說結論小節,先介紹了 insert ... on duplicate key update 語句執行成功之后,影響行數可能的 3 種取值:0、1、2,以及對每一種取值進行了比較詳細的說明。

然后介紹了 replace into 語句執行成功之后,影響行數可能的 2 種取值:1、N(大于 1 的整數),以及對這兩種取值進行了比較詳細的說明。

執行過程分析小節,詳細分析了 insert ... on duplicate key update 語句、replace into 語句的執行過程。

本文轉載自微信公眾號「一樹一溪」,可以通過以下二維碼關注。轉載本文請聯系一樹一溪公眾號。

責任編輯:姜華 來源: 一樹一溪
相關推薦

2022-05-26 09:09:08

NetOpsDevOpsNetSecOps

2022-06-07 09:30:36

URLURN

2021-01-13 09:27:31

微服務API分布式

2021-05-16 14:26:08

RPAIPACIO

2024-05-27 00:40:00

2022-02-27 15:33:22

安全CASBSASE

2021-12-17 14:40:02

while(1)for(;;)語言

2022-08-02 08:23:37

SessionCookies

2024-03-05 18:59:59

前端開發localhost

2024-09-09 13:10:14

2020-03-09 20:56:19

LoRaLoRaWAN無線技術

2022-06-06 14:53:02

LoRaLoRaWAN

2020-11-09 14:07:53

PyQtQt編程

2022-09-07 18:32:57

并發編程線程

2022-09-08 18:38:26

LinuxWindowsmacOS

2021-07-27 08:02:45

DTO 軟件Pojo

2023-12-15 09:21:17

ObjectJavaString

2022-08-31 08:33:54

Bash操作系統Linux

2022-08-22 07:06:32

MyBatisSQL占位符

2025-03-10 09:30:00

SpringJava開發
點贊
收藏

51CTO技術棧公眾號

国产一区二区色| 日韩成人精品一区二区三区| 激情图片小说一区| 日韩中文字幕网址| 日韩肉感妇bbwbbwbbw| 国产 中文 字幕 日韩 在线| 免费av在线网址| 尤物在线精品| 亚洲欧美专区| 成人av手机在线观看| 国内伊人久久久久久网站视频 | 亚洲一级网站| 亚洲精品一区在线观看| 日韩欧美不卡在线| eeuss影院www在线观看| 日韩不卡一二三区| 欧美剧在线观看| 日本中文字幕观看| 岛国av在线播放| 国产无人区一区二区三区| 91精品国产综合久久久久久蜜臀| 九九热国产精品视频| 日韩欧美影院| 欧美裸体一区二区三区| www精品久久| 国产精品四虎| 国产精品一区在线观看乱码| 国产成人在线精品| 欧美精品色哟哟| 成久久久网站| 欧美大片日本大片免费观看| 99久久国产宗和精品1上映| 97在线观看免费观看高清| 成人免费视频视频| 国产精品中文久久久久久久| 国产网站在线看| 神马久久一区二区三区| 欧洲精品一区二区| 精品视频免费在线播放| 日本电影在线观看网站| 99在线热播精品免费| 国产女精品视频网站免费| 97久久久久久久| 午夜精品毛片| 国产午夜精品美女视频明星a级| 日韩成人精品视频在线观看| 肉色欧美久久久久久久免费看| 一区二区三区四区中文字幕| 亚洲mv在线看| 无码国精品一区二区免费蜜桃| 国产老妇另类xxxxx| 国产va免费精品高清在线| 久久精品久久精品久久| 日韩在线中文| 国产在线看片免费视频在线观看| 欧美激情日韩| 亚洲网站视频福利| 一区二区传媒有限公司| 加勒比一区二区三区在线| 国产精品白丝jk黑袜喷水| 国产欧美日韩卡一| 成人免费午夜电影| 一级成人黄色片| 亚洲高清成人| 久久视频这里只有精品| 中文国语毛片高清视频| 亚洲动漫在线观看| 日韩精品在线免费观看视频| 下面一进一出好爽视频| 日韩免费一级| 制服丝袜亚洲色图| 一级片免费在线观看视频| 久久69成人| 国产国产精品人在线视| 青青青免费在线| 国产日产一区二区三区| 国产日韩欧美精品在线| 欧美精品一区在线| 你懂的在线观看| 99国产精品久久久久久久久久| 2014亚洲精品| 水中色av综合| 亚洲精品综合| 欧美精品久久久久久久免费观看| 91免费公开视频| 天天av综合| 精品国产一区二区三区在线观看 | 六月丁香综合| 97精品久久久| 日韩男人的天堂| 亚洲欧美网站| 国产精品678| 在线免费观看高清视频| 久久66热re国产| 91久久精品国产91久久性色tv | 久久国产99| 日本午夜精品理论片a级appf发布| 国产中文字幕免费| 久久亚洲色图| 国产欧美一区二区三区视频| 国产jzjzjz丝袜老师水多| 国产激情视频一区二区三区欧美 | 精品日本高清在线播放| 黄色动漫网站入口| 巨大黑人极品videos精品| 欧美一区午夜视频在线观看| 色综合久久五月| 国产欧美日韩免费观看| 中文字幕日韩精品在线观看| 国产盗摄一区二区三区在线| 亚洲韩日在线| 国产精品专区一| 国产高清免费av| 久久女同精品一区二区| 一区二区三区免费看| h片在线观看视频免费免费| 91福利社在线观看| 稀缺呦国内精品呦| 欧洲乱码伦视频免费| 欧美日韩国产成人在线| 自拍偷拍校园春色| 国产精品一区二区免费不卡 | 亚洲午夜一区二区| 黄色a级片免费| 国产精品视频首页| 亚洲精品mp4| 国产一区二区三区四区在线| 亚洲国产精品一区| 国产精品视频网| 国产毛片毛片毛片毛片毛片| 99国产精品99久久久久久| 亚洲成色www久久网站| а√天堂资源官网在线资源| 欧美日韩国产综合久久| 好吊日免费视频| 91成人网在线观看| 国产精品免费一区豆花| 少妇一级淫片免费看| 亚洲女同一区二区| 亚洲男人天堂久| 国产精品污www一区二区三区| 日批视频在线播放| 国产精品国产三级国产有无不卡 | 色哟哟在线观看视频| 国产成人一二片| 日韩亚洲欧美中文在线| 欧美成人精品欧美一级私黄| 老司机一区二区| 久久精品国产一区二区三区日韩| 日本小视频在线免费观看| 欧美色综合网站| 成人午夜福利一区二区| 亚洲大胆在线| 国产高清精品一区二区| а√中文在线8| 欧美美女一区二区三区| 人成免费在线视频| 母乳一区在线观看| 鲁鲁视频www一区二区| 久草在线视频资源| 精品少妇一区二区| 国产1区2区3区4区| 国产盗摄一区二区三区| 一区二区三区四区欧美日韩| 99九九久久| 亚洲日本aⅴ片在线观看香蕉| 少妇光屁股影院| 夜夜夜久久久| 国产在线一区二区三区欧美| 成人免费观看在线观看| 精品成a人在线观看| 日韩精品一区二区三| 国产精品一品视频| 日本精品福利视频| 国产在线一区不卡| 久久99精品国产99久久6尤物| www.久久久久久| 亚洲黄色小说网站| 东京热av一区| 99热精品在线观看| 久久人人九九| 香蕉成人av| 在线视频精品一| 中文字幕在线播放日韩| 一区视频在线播放| 女王人厕视频2ⅴk| 亚洲一级高清| 麻豆91av| 欧亚av在线| 亚洲桃花岛网站| 丁香社区五月天| 国产精品国产三级国产a| 91日韩视频在线观看| 日韩欧美精品| 国产日韩在线视频| www在线看| 亚洲精品久久久一区二区三区 | 国产aaa一级片| www.av网站| 黄色一区二区在线| 成人免费网站黄| 精品一区二区三区免费观看| 久久av秘一区二区三区| 国产精品宾馆| 欧美尤物巨大精品爽| 免费高清在线观看| 精品国产自在久精品国产| 久久精品国产成人av| 国产欧美视频在线观看| 性感美女一区二区三区| 久久都是精品| 91免费版网站在线观看| 在线亚洲人成| 亚洲日本中文字幕| www香蕉视频| 欧美午夜精品久久久久久浪潮 | 日韩一区二区三免费高清| 国产成人自拍视频在线| 国产精品丝袜91| 精品人妻一区二区免费| 日韩国产欧美视频| 青草青青在线视频| 色97色成人| 精品欧美日韩| 亚洲资源在线| 欧美一级在线亚洲天堂| 成人影院在线观看| 国产亚洲欧美日韩一区二区| 国产v片在线观看| 在线一区二区观看| 日本一级黄色大片| 亚洲狠狠丁香婷婷综合久久久| 800av在线播放| 国产久卡久卡久卡久卡视频精品| 成熟了的熟妇毛茸茸| 欧美69wwwcom| 无遮挡亚洲一区| 少妇精品导航| 99国产在线观看| 亚洲国产91视频| 欧美孕妇毛茸茸xxxx| 狂野欧美激情性xxxx欧美| 在线日韩av观看| 欧美成人综合在线| 亚洲成人黄色在线观看| 欧美videossex极品| 亚洲一区在线观看视频| 潮喷失禁大喷水aⅴ无码| 91小视频免费看| 亚洲av无码一区东京热久久| 国产精品一级在线| 中文字幕 欧美日韩| 麻豆国产精品视频| 日本www高清视频| 麻豆91精品| 欧美男女爱爱视频| 99热在线精品观看| 乱熟女高潮一区二区在线| 女人色偷偷aa久久天堂| 永久久久久久| 欧美成人三级视频| 蜜桃一区二区三区四区| 国产真人无码作爱视频免费| 99在线热播精品免费99热| 日韩av新片网| 精品二区久久| 无码粉嫩虎白一线天在线观看 | 成人性生交大片免费观看嘿嘿视频 | av电影网站在线观看| 99久久久精品| 一起草在线视频| 9人人澡人人爽人人精品| yy1111111| av中文字幕在线不卡| 亚洲の无码国产の无码步美| 99视频精品在线| 美女伦理水蜜桃4| 99久久精品免费| 天天躁日日躁狠狠躁av麻豆男男| 国产suv精品一区二区三区| 男男受被啪到高潮自述| 成人av电影在线网| 黄色av网址在线观看| 2014亚洲片线观看视频免费| 狠狠人妻久久久久久综合蜜桃| 久久久久久影视| 亚洲国产日韩一区无码精品久久久| 欧美激情一区不卡| 无码人妻精品一区二区三应用大全| 国产乱人伦精品一区二区在线观看 | 美女一区二区久久| 国产成年人视频网站| 国产激情一区二区三区| 性猛交╳xxx乱大交| 久久亚洲一级片| 波多野结衣一二三区| 国产偷国产偷亚洲高清人白洁| 精品视频第一页| 亚洲精品免费视频| 久久99精品波多结衣一区| 欧美在线999| www.国产.com| 日韩国产激情在线| 菠萝蜜视频国产在线播放| 欧美成人午夜激情视频| 日韩深夜视频| 久久人人看视频| 亚洲成人一区在线观看| 91精品国产91久久久久青草| 国产精品极品在线观看| 色噜噜狠狠色综合网| 91精品电影| 日韩精品视频久久| 紧缚捆绑精品一区二区| 国内自拍偷拍视频| 国产亚洲精品免费| 亚洲色图综合区| 欧美午夜精品久久久久久浪潮| 97免费观看视频| 日韩va亚洲va欧洲va国产| 最新国产在线观看| 国内偷自视频区视频综合 | 欧美在线亚洲一区| 国产激情欧美| 精品国产综合久久| 欧美激情aⅴ一区二区三区| 欧美污视频网站| 国产福利一区二区| 中文字幕av久久爽一区| 偷拍亚洲欧洲综合| 在线免费观看高清视频| 亚洲欧美中文另类| 国产精品无码永久免费不卡| 国产一区二区三区四区大秀| 99精品一区二区三区的区别| 免费国产自线拍一欧美视频| 亚洲免费黄色网| 久久久精品tv| 国产小视频在线观看免费| 884aa四虎影成人精品一区| 天堂v视频永久在线播放| 欧美肥臀大乳一区二区免费视频| 456成人影院在线观看| 精品国产乱码久久久久久蜜柚| 狠狠操综合网| 欧美在线观看www| 成人免费毛片app| 国产人妻精品一区二区三区不卡| 欧美系列在线观看| 久青青在线观看视频国产| 国内精品在线一区| 三级欧美日韩| 777久久精品一区二区三区无码| 日本视频中文字幕一区二区三区| 成人网站免费观看| 亚洲五码中文字幕| 黄色片一区二区| 欧美精品一区二区久久婷婷 | 成人禁用看黄a在线| 一区二区黄色片| 综合欧美亚洲日本| 中文字幕在线播放不卡| 中文字幕不卡av| aaaa欧美| 欧美精品一区二区三区在线看午夜 | av亚洲天堂网| 国产精品久久久久婷婷| 无码人妻精品一区二区50| 亚洲免费中文字幕| 日韩伦理在线| 区一区二区三区中文字幕| 美女诱惑黄网站一区| 国产精品密蕾丝袜| 亚洲不卡一区二区三区| 色欲av永久无码精品无码蜜桃| 国产69精品久久久久9| 国产区精品视频在线观看豆花| 成人一区二区免费视频| 99久久伊人网影院| 波多野结衣视频观看| 亚洲人av在线影院| 成人午夜毛片| 日本黄xxxxxxxxx100| 国产精品一区二区视频| 欧美成人aaaaⅴ片在线看| 精品国产免费一区二区三区四区| 鲁鲁在线中文| 欧美裸体网站| 久久精品国产一区二区三 | 91在线三级| 91在线视频精品| 日韩黄色在线视频| 欧美成va人片在线观看| 免费高潮视频95在线观看网站| 久久综合中文色婷婷| 日韩影院在线观看| 麻豆视频在线免费看| 亚洲国产成人久久| 成人免费一区| avove在线观看|