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

什么?還不了解MySQLl存儲過程與觸發器的創建使用?

存儲 存儲軟件
或許你曾經去面試的時候被問到過關于mysql數據庫的存儲過程和觸發器的問題,如果你還不懂可以看下這篇關于存儲過程和觸發器的文章,希望能幫助到有需要的朋友。

 或許你曾經去面試的時候被問到過關于mysql數據庫的存儲過程和觸發器的問題,如果你還不懂可以看下這篇關于存儲過程和觸發器的文章,希望能幫助到有需要的朋友。

[[255513]]

Mysql存儲過程與觸發器

本篇文章主要是簡單解釋mysql中存儲過程的創建、調用以及介紹觸發器和如何創建觸發器。那么關于存儲過程和觸發器那些官方理論的介紹我就不在這里啰嗦了。

1數據表的準備

下面所有例子中用到的表的創建腳本。tb_user是下面例子中的用戶表,tb_blog是博客表,tb_user_log是用戶信息更新日記表。

  1. use db_mybatis; 
  2.  
  3. create table tb_user( 
  4.     id int(11) unsigned not null auto_increment, 
  5.     uname varchar(50) not null
  6.     pwd varchar(50) not null
  7.     primary key (id) 
  8. )engine=InnoDB default charset=utf8; 
  9.  
  10.  
  11. create table tb_blog( 
  12.     id int(11) unsigned not null auto_increment, 
  13.     title varchar(50) not null
  14.     details varchar(50) not null
  15.     create_date datetime not null
  16.     update_date datetime not null
  17.     primary key (id) 
  18. )engine=InnoDB default charset=utf8; 
  19.  
  20. create table tb_user_log( 
  21.     id int(11) unsigned not null auto_increment, 
  22.     create_date datetime not null
  23.     details varchar(255) not null
  24.     primary key (id) 
  25. )engine=InnoDB default charset=utf8; 

2“delimiter //”的解釋

mysql默認以';'作為語句結束符。我們都知道,在mysql命令行模式下,當輸入一條語句時,如果不加‘;’回車是不會執行輸入的sql語句的。如:

  1. mysql> select * from tb_blog  
  2.     ->  
  3.     ->  
  4.     ->  
  5.     ->  
  6.     -> ; 
  7. +----+--------+--------------+---------------------+---------------------+ 
  8. | id | title  | details      | create_date         | update_date         | 
  9. +----+--------+--------------+---------------------+---------------------+ 
  10. |  2 | dsssss | 這是內容     | 2018-08-13 02:42:44 | 2018-08-15 16:39:16 | 
  11. |  3 | new1   | 這是內容     | 2018-08-13 02:42:44 | 2018-08-13 22:04:21 | 
  12. |  4 | new2   | 這是內容     | 2018-08-13 02:42:44 | 2018-08-13 22:04:21 | 
  13. |  5 | new3   | 這是內容     | 2018-08-13 02:42:44 | 2018-08-13 22:04:21 | 
  14. |  6 | new4   | 這是內容     | 2018-08-13 02:42:44 | 2018-08-13 22:04:21 | 
  15. +----+--------+--------------+---------------------+---------------------+ 
  16. rows in set (0.01 sec) 

而delimiter的作用就是修改語句結束符,如delimiter &就是將sql語句的結束為定義為'&'符號,當遇到'&'符號時,mysql判斷為語句輸入完成就會執行,看下面例子:

  1. mysql> delimiter & 
  2. mysql> select * from tb_blog 
  3.     ->  
  4.     -> & 
  5. +----+--------+--------------+---------------------+---------------------+ 
  6. | id | title  | details      | create_date         | update_date         | 
  7. +----+--------+--------------+---------------------+---------------------+ 
  8. |  2 | dsssss | 這是內容     | 2018-08-13 02:42:44 | 2018-08-15 16:42:54 | 
  9. |  3 | new1   | 這是內容     | 2018-08-13 02:42:44 | 2018-08-13 22:04:21 | 
  10. |  4 | new2   | 這是內容     | 2018-08-13 02:42:44 | 2018-08-13 22:04:21 | 
  11. |  5 | new3   | 這是內容     | 2018-08-13 02:42:44 | 2018-08-13 22:04:21 | 
  12. |  6 | new4   | 這是內容     | 2018-08-13 02:42:44 | 2018-08-13 22:04:21 | 
  13. +----+--------+--------------+---------------------+---------------------+ 
  14. rows in set (0.00 sec) 

所以,delimiter //的作用是將'//'作為語句的結束符,'//'可以是其他的字符,比如上面例子中使用'&';

那么為什么編寫存儲過程和觸發器我們需要將默認的';'修改為'//'作為sql語句結束符呢?因為我們要在存儲過程或觸發器中執行sql語句,所以會用到';',如果不改其它符號而使用';'作為語句結束符的話,mysql遇到';'就當作一條語句完成了,而存儲過程或觸發器的sql語句都沒寫完全呢,這樣只會ERROR。

注意,在使用delimiter //將sql語句結束符改為'//'用完后(如完成創建存儲過程)記得要使用delimiter ;將sql語句結束符改回為默認。

3存儲過程

先來看兩個簡單的存儲過程實例,對存儲過程的創建和調用有一個模糊的印象。

  1. #實例一:創建查詢所有博客的存儲過程 
  2. drop procedure if exists select_procedure 
  3. delimiter // 
  4. create procedure select_procedure() 
  5.     begin 
  6.         select * from tb_blog; 
  7.     end // 
  8. delimiter ; 
  9. #調用 
  10. call select_procedure; 
  11.  
  12.  
  13. #實例二:更新博客修改時間的存儲過程 
  14. drop procedure if exists update_blog_updatedate; 
  15. delimiter // 
  16. create procedure update_blog_updatedate(blogid int(11)) 
  17.     begin 
  18.         update tb_blog set update_date = sysdate() where id = blogid;#sysdate()獲取當前日期+時間字符串(24小時格式) 
  19.     end // 
  20. delimiter ; 
  21. #調用 
  22. call update_blog_updatedate(2); 

好,下面我通過一個簡單的存儲過程實例來分析如何創建一個存儲過程。先看例子:

  1. #創建更新博客標題的存儲過程 
  2. drop procedure if exists update_blog;#如果存在該存儲過程先刪除 
  3. delimiter // 
  4. create procedure update_blog(blogid int(11)) 
  5.     begin 
  6.         start transaction;#開啟事務 
  7.         update tb_blog set title='dsssss' where id=blogid;#要做的事情 
  8.         commit;#提交事務 
  9.     end // 
  10. delimiter ; 

上面實際創建存儲過程的語句為

  1. create procedure update_blog(blogid int(11))#(參數1 參數類型(長度),參數2 參數類型(長度),...) 
  2.     begin 
  3.         start transaction;#開啟事務 
  4.         update tb_blog set title='dsssss' where id=blogid;#要做的事情 
  5.         commit;#提交事務 
  6.     end // 

end后面的'//'是sql語句結束符,就是前面用delimiter //修改的sql語句結束符,所以從create到//就是一條完整的創建存儲過程的sql語句。那么為什么還要在前面加一條drop procedure if exists update_blog?其實你可以不加的,這條語句的作用只是當要創建的存儲過程已經存在同名的存儲過程時將已經存在的存儲過程刪除。

現在再來解析創建存儲過程的這條語句,其中,update_blog時存儲過程的名稱,()內是調用該存儲過程時要傳遞的參數,參數個數不限制,參數間用','分割,參數要聲明類型,如blogid int(11),blogid就是參數名,int是類型,如果要指定長度則在類型后面加'(長度)'。

begin和end之間就是存儲過程要做的事情。

使用call+存儲過程名稱來調用存儲過程,如果存儲過程定義了參數,那么需要在調用的時候傳入參數,否則調用失敗。

  1. call update_blog(2);#調用存儲過程 

下面來看一個稍微成型點的存儲過程。

  1. # 創建批量更新的存儲過程 
  2. drop procedure if exists update_all_blog_date; 
  3. delimiter // 
  4. create procedure update_all_blog_date() 
  5.     begin 
  6.         declare id_index int(11) default 0;#定義變量id_index,類型為int,默認值為0 
  7.         declare blog_count int default 0; 
  8.         declare bid int
  9.         select count(*) into blog_count from tb_blog;#into blog_count 將查詢結果賦值給blog_count變量 
  10.         if blog_count>0 then 
  11.             #start transaction
  12.             while id_index<=blog_count do 
  13.                 #update tb_blog set update_date = sysdate() where id in 
  14.                 #(select tb.id from (select id from tb_blog limit id_index,1) as tb); 
  15.                 #set id_index=id_index+1; 
  16.  
  17.                 select id into bid from tb_blog limit id_index,1; 
  18.                 update tb_blog set update_date = sysdate() where id = bid; 
  19.                 set id_index=id_index+1; 
  20.             end while; 
  21.             #commit
  22.         end if; 
  23.     end // 
  24. delimiter ; 
  25.  
  26. call update_all_blog_date; 

解析:

declare是定義變量的關鍵字,可以理解為javascript中的var關鍵字。定義變量必須是在存儲過程的內部,即begin和end之間。變量的定義方式是declare關鍵字加變量名加變量類型,如果想指定默認值就在類型后面加上“default 默認值”。

select count(*) into blog_count from tb_blog語句是獲取tb_blog表的總數賦值給blog_count,將查詢結果賦值給某個變量使用into關鍵字。

set關鍵字是修改變量的值,將一個新的值寫給set指定的變量。其它的就不做解釋了,看不懂就需要學一下mysql的條件語句與循環語句了。

4Mysql中的觸發器

觸發器是什么?

觸發器就是一個函數,當滿足某種條件時才會觸發其執行。

什么情況下使用觸發器?

比如我們要為用戶所做的個人信息修改記錄一條變更日記,那么是不是需要在修改完用戶信息之后添加一條日記記錄?如果不使用觸發器我們就需要執行兩條sql語句,***條是修改用戶信息的sql語句,第二條是添加一個日記記錄的sql語句。我們在寫業務邏輯代碼的時候如果在多處地方可能對用戶信息修改,在某處忘記了寫日記記錄也不奇怪。而如果使用觸發器,當用戶信息修改時觸發觸發器執行添加一條日記記錄,這樣也會比在業務代碼中執行兩條sql語句效率要高。

那么如果創建一個觸發器呢?

  1. create trigger 觸發器名稱 after|before insert|delete|update on 表名 for each row 
  2. begin 
  3.     #觸發器要做的事情 
  4. end 
  • 表名:將改觸發器的觸發條件掛載在哪張表上,也就是指定哪張表的操作滿足條件時觸發該觸發器。
  • 觸發器執行時機:after或者before,即之前還是之后。
  • 觸發的條件:insert|delete|update 即可選增刪改時觸發;比如alter insert,就是在添加完成之后觸發,執行時機與觸發條件可隨意組合使用,即

before insert

before delete

before update

after insert

after delete

after update

  • for each row表示任何一條記錄的操作滿足觸發條件都會觸發觸發器執行。

下面來看一個實例:在用戶信息表tb_user中的記錄被修改之后添加一條日記記錄,記錄修改時間和修改內容。

  1. drop trigger if exists on_user_info_chang_log; 
  2. delimiter // 
  3. create trigger on_user_info_chang_log after update on tb_user for each row 
  4. begin 
  5.     declare info varchar(255) charset utf8 default ''
  6.     set info = '修改之前的信息為:['
  7.     set info = concat(info,NEW.uname); 
  8.     set info = concat(info,','); 
  9.     set info = concat(info,New.pwd); 
  10.     set info = concat(info,'],修改之前的信息為:['); 
  11.     set info = concat(info,OLD.uname); 
  12.     set info = concat(info,','); 
  13.     set info = concat(info,OLD.pwd); 
  14.  
  15.     insert into tb_user_log (create_date,details) value(sysdate(),info); 
  16. end // 
  17. delimiter ; 

解析:

  • concat函數是字符串拼接函數
  • NEW是修改后的新的記錄
  • OLD是修改前的舊的紀錄
  • sysdate函數是獲取當前系統日期時間字符串

下面我們執行一條sql來觸發該觸發器

  1. update tb_user set uname='new_name' where id = 1; 

查看日記表中是否添加了一條記錄。

責任編輯:武曉燕 來源: java藝術
相關推薦

2020-04-20 10:55:57

大數據人工智能技術

2010-04-26 14:12:23

Oracle使用游標觸

2019-10-30 09:25:58

NginxApache 服務器

2010-05-26 17:57:44

MySQL 觸發器

2010-05-18 15:36:44

MySQL觸發器

2024-04-25 09:43:42

PostgreSQL數據庫關系型數據庫

2010-08-19 10:12:34

路由器標準

2009-11-18 13:15:06

Oracle觸發器

2010-05-19 11:25:46

MySQL觸發器

2010-04-09 09:07:43

Oracle游標觸發器

2019-04-30 15:28:46

數據庫存儲過程觸發器

2018-08-10 09:40:02

數據庫MySQL存儲過程

2021-03-09 15:33:00

無服務器工程師無運維

2010-10-11 14:52:43

Mysql觸發器

2010-05-19 09:40:05

MySQL觸發器

2024-01-19 09:37:19

MySQL數據庫

2011-08-10 16:46:01

DB2數據庫觸發器

2010-07-16 10:19:31

2017-03-27 14:39:10

互聯網

2019-12-11 15:36:23

AI 數據人工智能
點贊
收藏

51CTO技術棧公眾號

日韩高清精品免费观看| 免费在线观看视频a| 中文字幕第99页| 亚洲影视一区| 日韩高清av一区二区三区| 国产黄色特级片| 高潮毛片在线观看| 99久久精品一区| 国产精品麻豆va在线播放| 少妇aaaaa| 天堂综合网久久| 欧美三级在线播放| 久久国产精品网| av在线女优影院| 成人av电影在线| 国产精品一香蕉国产线看观看| 久久亚洲av午夜福利精品一区| 国产精品免费大片| 日韩欧美激情四射| 免费在线观看毛片网站| 羞羞视频在线免费国产| 欧美国产一区在线| 国产欧美精品一区二区三区| 在线观看亚洲国产| 在线视频日韩| 久久99精品国产99久久6尤物| 久久久久久久免费| 91好色先生tv| 久久综合九色综合欧美狠狠| 色综合久久中文字幕综合网小说| 亚洲自拍偷拍图| 99精品国产一区二区三区2021| 欧美日韩在线精品一区二区三区激情 | 久草综合在线| 亚洲mv在线观看| 中国一级黄色录像| 日本视频在线播放| 久久久精品国产免大香伊| 国产精品久久久久免费| 国产美女主播在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 欧美中文字幕视频在线观看| 亚洲一区二区91| 欧美1区2区3区| 欧美成人免费网| 午夜精品久久久久99蜜桃最新版| 国产欧美日韩精品一区二区免费 | 黑人狂躁日本妞一区二区三区| 国产午夜精品视频一区二区三区| 日本暖暖在线视频| 国产精品久久久久一区二区三区 | 国产在线高潮| 国产精品成人一区二区艾草 | 懂色av粉嫩av蜜乳av| 999精品视频在这里| 日韩一级免费一区| 毛毛毛毛毛毛毛片123| 激情欧美一区二区三区黑长吊| 日本韩国精品在线| 亚洲综合在线网站| 欧美精品高清| 在线观看av一区| 8x8x最新地址| **日韩最新| 日韩欧美一级在线播放| 最新国产精品自拍| 精品人人人人| 精品香蕉一区二区三区| 国产熟妇搡bbbb搡bbbb| 亚洲国产合集| 欧美视频在线免费看| 成熟丰满熟妇高潮xxxxx视频| 高清在线视频不卡| 色妞www精品视频| 国产小视频精品| 精品91福利视频| 精品日韩在线观看| 国产男女猛烈无遮挡a片漫画 | 日韩pacopacomama| 在线观看欧美精品| 91欧美一区二区三区| 老牛影视av一区二区在线观看| 日韩精品在线观看视频| 中字幕一区二区三区乱码| 亚州av乱码久久精品蜜桃| 日韩av网址在线| 国产免费一区二区三区网站免费| 日韩三级在线| 欧美多人乱p欧美4p久久| 欧美日韩乱国产| 麻豆极品一区二区三区| 99精品国产高清一区二区| 天天干天天做天天操| 久久久精品免费网站| 日韩人妻精品一区二区三区| а_天堂中文在线| 色欧美片视频在线观看在线视频| 亚洲精品乱码久久久久久动漫| 成人搞黄视频| 中文字幕在线看视频国产欧美在线看完整| 婷婷色中文字幕| 日日夜夜免费精品视频| 91亚色免费| h网站视频在线观看| 亚洲一线二线三线视频| 99热手机在线| 加勒比视频一区| 中文字幕欧美日韩精品 | 欧美视频二区36p| 污污视频网站在线| 色先锋久久影院av| 欧美xxxx做受欧美| 成人h动漫精品一区二区下载| 国产精品香蕉一区二区三区| 色噜噜色狠狠狠狠狠综合色一| 毛片在线导航| 欧美日韩免费观看一区三区| 欧美xxxxx少妇| 911精品美国片911久久久| 欧美一级大胆视频| 成人av一区二区三区在线观看| 日本一区免费视频| 国产免费黄色小视频| 国产精品一区三区在线观看| 一本一道久久a久久精品逆3p| 久久草视频在线| 国产一区二区毛片| 亚洲精品中字| **欧美日韩在线观看| 亚洲精品久久久久久久久| 麻豆视频在线免费看| 日本视频中文字幕一区二区三区| 好吊妞www.84com只有这里才有精品| 男人天堂久久久| 欧美在线综合视频| 亚洲第一香蕉网| 免费一级欧美片在线播放| 久久久视频在线| 精品无码久久久久久久久| 裸体在线国模精品偷拍| 青娱乐一区二区| 欧美巨大丰满猛性社交| 欧美成人激情免费网| 日韩a级片在线观看| 国内精品伊人久久久久影院对白| 性刺激综合网| 成人黄色免费观看| 自拍偷拍免费精品| 中文在线a天堂| 中文字幕av一区 二区| 97公开免费视频| 精品免费av| 国产精品久久久久久久天堂| 国产在线小视频| 欧美综合一区二区三区| 性猛交娇小69hd| 视频一区欧美日韩| 色一情一乱一伦一区二区三区 | 亚洲一级Av无码毛片久久精品| 欧美一区免费| 成人av网站观看| xxxx另类黑人| 日韩久久免费视频| 青草视频在线观看免费| 久久精品一区四区| 国产九九在线视频| 国产精品毛片久久| 99re国产| 中国色在线日|韩| 亚洲欧美中文另类| 亚洲中文一区二区三区| 亚洲男帅同性gay1069| 欧美成人精品一区二区综合免费| 亚洲国产美女| 欧美综合激情| 91成人福利社区| 欧美黄网免费在线观看| 蜜臀av免费在线观看| 黄色成人在线免费| 调教驯服丰满美艳麻麻在线视频| 久久黄色级2电影| 欧美中文字幕在线观看视频 | 欧美黑人精品一区二区不卡| chinese国产精品| 亚洲欧美日韩一区在线观看| 日韩高清av电影| 99精品女人在线观看免费视频| 久久久在线视频| 国产主播福利在线| 日韩一级成人av| 在线观看日韩中文字幕| 中文字幕制服丝袜一区二区三区| 肉丝美足丝袜一区二区三区四| 久久激情婷婷| 男同互操gay射视频在线看| 欧美日韩一区二区三区不卡视频| 国产精品av在线| 少女频道在线观看高清 | 欧美日韩久久| 日本福利一区二区三区| 欧美国产中文高清| 欧美洲成人男女午夜视频| 91大神在线网站| 亚洲精品国产美女| 国产一区二区在线视频观看| 午夜av一区二区| 国产美女久久久久久| 91丨porny丨首页| 91蝌蚪视频在线| 日韩综合一区二区| 国产一二三在线视频| 国产在视频线精品视频www666| 国产精品久久久久久久小唯西川| 久久青草免费| 日韩av大片在线| www.youjizz.com在线| 久久成人亚洲精品| 国产在线电影| 日韩电影中文 亚洲精品乱码 | 欧美日韩在线视频免费播放| 日本一区二区久久| 一区二区视频观看| 懂色av一区二区在线播放| 欧美在线aaa| 首页综合国产亚洲丝袜| 国产二级片在线观看| 亚洲欧美综合国产精品一区| 一区二区三区不卡在线| 国产伦精品一区二区三区千人斩 | 中文字幕国产高清| 奇米色777欧美一区二区| 国产精品秘入口18禁麻豆免会员| 黄色日韩在线| 蜜桃网站在线观看| 亚洲国产不卡| 亚洲第一精品区| 欧美成人milf| 一区二区日本伦理| 日韩电影二区| 天天好比中文综合网| 国产va免费精品观看精品视频| 国产区二精品视| 成人在线超碰| 国严精品久久久久久亚洲影视| 2023国产精华国产精品| 91网免费观看| 亚洲午夜精品| 国产精品日韩一区二区| 51精品国产| 国产九色91| 久本草在线中文字幕亚洲| 国产免费一区二区三区| 国产在线播放精品| 久久99九九| 精品在线91| 国产精品极品美女粉嫩高清在线| 欧美成人精品一区二区男人小说| 日本免费久久高清视频| 国产成人精品123区免费视频| 国产成人激情小视频| 777午夜精品电影免费看| 国产精品国内视频| 国产精品成人国产| 国产日产欧美a一级在线| 日韩一区二区三免费高清在线观看| 国产一区红桃视频| 日韩精品久久久久久久软件91| 成人av免费在线看| 日韩精选在线| 色狠狠久久av五月综合| 亚洲va在线| 日b视频免费观看| 蜜桃久久av| 五月天激情播播| 国产精品18久久久久久vr| 亚洲一区二区三区四区av| 91免费国产在线| www.4hu95.com四虎| 亚洲另类春色国产| 欧美videossex极品| 精品污污网站免费看| 性做久久久久久久久久| 亚洲男人天堂网站| 精品视频在线一区二区| 久久久影视精品| jizz欧美| 国产亚洲欧美另类一区二区三区| 性人久久久久| 日本一区二区三区四区五区六区| 亚洲免费观看| 国产91色在线观看| 成人妖精视频yjsp地址| 美国黑人一级大黄| 亚洲电影激情视频网站| 中文字幕第315页| 亚洲国产一区二区三区四区| caoporn国产精品免费视频| 久久综合免费视频影院| 最新中文字幕在线播放| 亚洲r级在线观看| 免费av一区二区三区四区| 国产又粗又爽又黄的视频| 久久久久99| 韩国av中国字幕| 国产精品久久777777| 天堂网av手机版| 日韩视频免费直播| 思思99re6国产在线播放| 97精品在线观看| 国产在线不卡一区二区三区| 欧美激情专区| 精品成人免费| 亚洲图色中文字幕| 久久免费视频色| 国产性生活网站| 欧美美女直播网站| 国产最新视频在线| 欧美亚洲日本网站| 一区二区三区亚洲变态调教大结局| 色噜噜色狠狠狠狠狠综合色一| 亚洲毛片在线| 国产精品无码自拍| 综合激情成人伊人| 久草视频在线免费| 亚洲国产日韩欧美在线99| av免费网站在线| 成人亚洲激情网| 欧美少妇xxxx| 欧美v在线观看| 北条麻妃一区二区三区| 欧美日韩黄色网| 欧美久久久一区| 2017亚洲天堂1024| 国产精品igao视频| 国产aⅴ精品一区二区三区久久| 欧美男女爱爱视频| 成人手机电影网| 日韩成人短视频| 欧美一级电影网站| 黄色动漫在线| 亚洲a成v人在线观看| 亚洲国产一成人久久精品| 亚洲免费一级视频| 国产精品免费丝袜| 一级黄色片在线| 啊v视频在线一区二区三区| 亚洲免费一区| 欧美 国产 精品| 国产精品资源网站| 青娱乐免费在线视频| 欧美tickling挠脚心丨vk| 日本小视频在线免费观看| 99精品在线直播| 国内精品福利| 中文字幕免费高清视频| 五月婷婷久久综合| 亚洲 另类 春色 国产| 日韩av手机在线看| 日韩.com| 网站在线你懂的| 亚洲黄色片在线观看| 精品国产黄色片| 久久免费观看视频| 色橹橹欧美在线观看视频高清| 无码人妻h动漫| 欧美国产1区2区| 国产日韩欧美视频在线观看| 免费不卡在线观看av| 国产精品美女在线观看直播| av动漫在线看| 亚洲国产高清在线观看视频| 91精品视频免费在线观看| 久操成人在线视频| 开心激情综合| 在线观看av日韩| 夜夜嗨av一区二区三区网页| 亚洲乱码国产乱码精品精软件| 欧美整片在线观看| 四虎国产精品免费观看| www.欧美com| 欧美午夜www高清视频| 91精品国产综合久久久久久豆腐| 亚洲已满18点击进入在线看片 | 国产欧美1区2区3区| 国产视频在线观看免费| 久久久在线免费观看| 日本女优一区| 亚洲一区二区三区四区av| 91国偷自产一区二区三区成为亚洲经典| 成年人在线视频免费观看| 超碰97网站| 日韩电影在线免费看| 美国黄色小视频| 亚洲人高潮女人毛茸茸| 国产免费av国片精品草莓男男| 精品这里只有精品| 亚洲欧洲三级电影| 日产精品久久久久久久性色| 91九色视频在线| 另类图片国产|