精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

综合久久综合| av在线亚洲一区| 久久精品亚洲乱码伦伦中文| 国产成人精品综合| 国产免费久久久久| 国产乱人伦精品一区| 色综合久久66| 一区精品在线| 日韩一级片免费看| 毛片一区二区三区| 久久99亚洲精品| 国产呦小j女精品视频| 2020国产精品小视频| 亚洲一二三四在线| 亚洲免费视频一区| 女人18毛片水真多18精品| 秋霞影院一区二区| 欧美国产日本高清在线| 亚洲av无码国产精品麻豆天美| 超碰国产精品一区二页| 欧美性猛交99久久久久99按摩| 亚洲国产精品一区在线观看不卡| 草草视频在线播放| 日本一不卡视频| 久久久久女教师免费一区| 日韩精品无码一区二区三区久久久| 国产精品视频首页| 91福利视频久久久久| 国产真人做爰毛片视频直播 | 亚洲风情在线资源| 亚洲美腿欧美偷拍| 亚洲日本欧美在线| 九九在线视频| www.亚洲精品| 99精彩视频| 国产又黄又大又爽| 欧美aaaaaa午夜精品| 欧美一区三区三区高中清蜜桃| 久久精品www| 亚洲男女av一区二区| 中国人与牲禽动交精品| 9.1成人看片免费版| 加勒比视频一区| 精品成人佐山爱一区二区| 一级黄色高清视频| 99九九久久| 日本久久一区二区三区| 国产精品一区二区免费在线观看| 欧美xxxx性xxxxx高清| 亚洲人亚洲人成电影网站色| 天堂av一区二区| 青青草免费在线| 91丨porny丨蝌蚪视频| 国产精品一区二区三区免费| 国产黄色片免费观看| 国产在线一区观看| 91在线观看欧美日韩| 91成人在线免费| 蜜桃视频一区二区三区| 国产精品美女www爽爽爽视频| 无码日韩精品一区二区| 一本久道综合久久精品| 555www成人网| 国产91国语对白在线| 亚洲专区欧美专区| 欧洲成人午夜免费大片| 你懂的国产在线| 先锋影音久久| 国产精品成人国产乱一区| 一级片免费在线播放| 久久这里只有| 国产精品久久久久9999| 中文字幕在线观看免费| 久久99久久久欧美国产| 成人性生交xxxxx网站| 国产精品视频在线观看免费| 国产在线精品一区二区| 电影午夜精品一区二区三区| 深爱激情五月婷婷| 久久久精品日韩欧美| 欧美国产综合视频| jizzjizz在线观看| 亚洲免费视频成人| 日本a在线免费观看| 校园春色亚洲| 欧美区在线观看| 毛毛毛毛毛毛毛片123| 国产精品成人自拍| 亚洲午夜精品久久久久久性色| 丁香激情五月少妇| 亚洲激情久久| 97国产真实伦对白精彩视频8| 日韩一级在线视频| 激情图片小说一区| 国产精品香蕉视屏| 成人福利在线| 亚洲一区视频在线| 亚洲人成无码www久久久| 九九热这里有精品| 精品精品国产高清a毛片牛牛 | 国产欧美一区二区精品性色超碰| 亚洲AV无码成人精品一区| 国产三级伦理在线| 欧美性一二三区| 人妻互换一二三区激情视频| 国产亚洲一区二区三区不卡| 不卡av日日日| 亚洲第一网站在线观看| 国产乱子伦一区二区三区国色天香| 国产一区二区免费电影| 日本在线免费| 丰满岳妇乱一区二区三区| 超碰在线资源站| 日韩大胆成人| 欧美第一淫aaasss性| 无码人妻av免费一区二区三区| 国产精品亚洲第一区在线暖暖韩国| 久久久久网址| 日本动漫同人动漫在线观看| 在线一区二区观看| 妖精视频一区二区| 99久久99久久精品国产片桃花 | 糖心vlog精品一区二区| 国产69精品一区二区亚洲孕妇| 日本不卡二区高清三区| 手机在线免费看av| 欧美日韩国产电影| 亚洲永久精品ww.7491进入| 国产精品xvideos88| 国产乱肥老妇国产一区二| 深夜福利免费在线观看| 亚洲电影在线免费观看| 亚洲综合在线一区二区| av一区二区高清| 欧美亚洲视频在线看网址| 亚洲a视频在线| 综合久久给合久久狠狠狠97色| 91蝌蚪视频在线观看| 精品五月天堂| 久久免费国产精品1| 国产av无码专区亚洲av麻豆| 国产精品成人一区二区艾草| 已婚少妇美妙人妻系列| 中文字幕精品影院| 日韩av电影在线网| 午夜福利一区二区三区| 亚洲aaa精品| 亚洲精品第二页| 亚洲精品一二| 国产女主播一区二区| 九色91在线| 精品国精品自拍自在线| 精品处破女学生| 国产不卡免费视频| 男人的天堂avav| 亚洲日本视频在线| 久久久久久久成人| 少妇一区二区三区四区| 婷婷开心久久网| 素人fc2av清纯18岁| 国产欧美二区| 久久久水蜜桃| 性欧美hd调教| 在线中文字幕日韩| 国产精品国产av| 亚洲免费av网站| 亚洲自拍偷拍精品| 亚洲影音先锋| 五月婷婷一区| www.成人在线.com| 欧美精品激情在线| 日韩欧美在线观看一区二区| 色视频一区二区| 啪啪一区二区三区| 国产精品 欧美精品| 久久久久久免费看| 国内精品久久久久久99蜜桃| 国产日韩在线一区| 神马午夜伦理不卡| 日韩电影免费观看在线观看| 国产精品第六页| 亚洲婷婷综合色高清在线| 在线中文字日产幕| 久热综合在线亚洲精品| 在线不卡视频一区二区| 91亚洲精品视频在线观看| 91精品国产自产91精品| 高清日韩av电影| 欧美一级国产精品| 亚洲熟女综合色一区二区三区| 中文成人av在线| 欧美激情一区二区三区p站| 日韩主播视频在线| 亚洲国产一二三精品无码| 成人性生交大片免费看96| 国产97在线|日韩| 日本h片在线| 国产一区二区三区直播精品电影 | 韩国精品一区二区| 欧美a v在线播放| 成人在线一区| 国产精品v欧美精品v日韩| 电影久久久久久| 九九热最新视频//这里只有精品 | 国产精品视频在线看| 伦伦影院午夜理论片| 媚黑女一区二区| 女人床在线观看| 精品一区av| 国产日韩精品推荐| av在线国产精品| 国产suv精品一区二区| 日本h片在线观看| 色av中文字幕一区| 天天干天天做天天操| 欧美一区二区高清| 亚洲视频在线观看一区二区| 香港成人在线视频| 欧美黄色一级网站| 国产精品你懂的在线| 国产精品高清无码在线观看| 国产91在线看| av在线免费看片| 免费的成人av| 久草在在线视频| 日韩视频二区| 欧美午夜小视频| 午夜电影亚洲| 亚洲欧美一二三| 97精品国产福利一区二区三区| 明星裸体视频一区二区| 国产欧美三级电影| 99re在线观看视频| 国产精品日韩精品在线播放| 国产精品亚洲自拍| 99久久婷婷国产综合精品首页| 欧美一区深夜视频| 在线免费三级电影网站| 午夜精品三级视频福利| 19禁羞羞电影院在线观看| 欧美高清视频在线| 人人超在线公开视频| 九九久久精品一区| a级片国产精品自在拍在线播放| 中文字幕在线亚洲| 亚洲视频tv| 色青青草原桃花久久综合| 成年人免费在线视频| 亚洲夜晚福利在线观看| 免费国产在线观看| 亚洲性线免费观看视频成熟| 精品三级久久久久久久电影聊斋| 国产视频精品va久久久久久| 少妇性bbb搡bbb爽爽爽欧美| 亚洲理论在线a中文字幕| 五十路在线观看| 亚洲精品久久久久久久久久久| 日本wwwxxxx| 亚洲黄色成人网| 午夜国产在线观看| 亚洲欧洲日产国码av系列天堂| 九色在线视频| 色哟哟入口国产精品| 黄色网页在线播放| 欧美丰满少妇xxxxx做受| 2018av在线| 国产a∨精品一区二区三区不卡| 日韩在线免费| 成人国产精品色哟哟| 欧美一区一区| 久久99国产精品| 精品高清在线| 看全色黄大色大片| 国产精品啊v在线| 成人免费在线小视频| 免费成人美女在线观看| 亚洲女人在线观看| 成人黄页毛片网站| 加勒比综合在线| 亚洲美女在线一区| 国产无遮挡呻吟娇喘视频| 欧美三级日韩三级国产三级| 国产乱码精品一区二区三区精东| 欧美大胆一级视频| 男人av在线| 超碰91人人草人人干| 亚洲第一av| 成人免费网站在线观看| 国内毛片久久| 在线观看福利一区| 亚洲伦理精品| 91看片破解版| 久久亚洲精精品中文字幕早川悠里 | 久久伊人国产| 国产精品免费看一区二区三区| 红桃成人av在线播放| 免费看黄色a级片| 久久久久欧美精品| 欧美日韩一区二区区别是什么 | 成人免费精品动漫网站| 性做久久久久久免费观看| 中文字幕欧美人妻精品| 精品国一区二区三区| 在线免费观看黄色网址| 久久久久这里只有精品| 久久久久毛片| 久久偷窥视频| 国内精品久久久久久久97牛牛 | 高清国产一区二区| 欧美三级视频网站| 精品福利在线视频| 国产成人精品av在线观| 亚洲色无码播放| 白白色在线观看| 91在线高清视频| 欧美在线免费看视频| 黄色动漫在线免费看| 国产激情视频一区二区三区欧美 | 成人字幕网zmw| 免费看av成人| 日韩中文字幕在线免费| 国产精品一区二区三区乱码| 夜夜春很很躁夜夜躁| 黄色成人av网| 亚洲精品国产suv一区| www.欧美精品| 欧美色网在线| 欧美精品成人一区二区在线观看 | 在线看的黄色网址| 久久综合色一综合色88| 精品无码免费视频| 日韩欧美中文一区二区| 免费在线观看av| 国产精品久久久久久久电影| 亚欧洲精品视频在线观看| 日本福利视频一区| 成人高清视频在线观看| 久久机热这里只有精品| 日韩视频在线永久播放| 黄色成人在线| 91日本在线视频| 国产精品麻豆久久| www.色就是色.com| 中文字幕永久在线不卡| 一本到在线视频| x99av成人免费| 久久精品xxxxx| 黄色免费高清视频| 国产一区二区三区免费观看| 国产成人久久久久| 欧美一区二区三区免费在线看| 菠萝蜜视频国产在线播放| 成人精品久久一区二区三区| 久久五月天小说| www.国产福利| 一区二区三区中文在线观看| 丰满肉嫩西川结衣av| 韩国福利视频一区| 欧美电影免费网站| 任你操这里只有精品| 中文字幕精品在线不卡| 97视频免费在线| 欧美精品久久久久a| 欧美理论电影在线精品| 黄色片久久久久| 中文字幕 久热精品 视频在线| 一级黄色大毛片| 不卡伊人av在线播放| 亚洲五码在线| 男人揉女人奶房视频60分| 国产欧美一区二区精品性色| 97精品人妻一区二区三区香蕉 | 久热这里只有精品在线| 日韩电影中文字幕在线观看| 亚洲mmav| 天天做天天躁天天躁| 91麻豆文化传媒在线观看| 亚洲精品无码久久久久| 欧美成人性生活| 亚洲伊人春色| 亚洲黄色片免费| 亚洲五码中文字幕| 国产天堂素人系列在线视频| 国产精品视频大全| 影音先锋亚洲电影| 欧美老女人性生活视频| 日韩欧美综合在线| 精品3atv在线视频| 成人手机在线播放| 26uuu欧美日本| 国产女18毛片多18精品| 97视频在线观看视频免费视频| 精品国产一区一区二区三亚瑟 | 一区二区三区国产好| 激情六月丁香婷婷| 亚洲欧美视频在线观看视频| 午夜性色福利影院| 91久久嫩草影院一区二区| 国产精品久久久久久久免费软件| 国产成人在线网址|