日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

超详细图解!【MySQL进阶篇】存储过程,视图,索引,函数,触发器

發(fā)布時間:2023/12/4 数据库 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 超详细图解!【MySQL进阶篇】存储过程,视图,索引,函数,触发器 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

超詳細圖解!【MySQL進階篇】存儲過程,視圖,索引,函數(shù),觸發(fā)器

        • 1.1 下載Linux 安裝包
        • 1.2 安裝MySQL
        • 1.3 啟動 MySQL 服務(wù)
        • 1.4 登錄MySQL
      • 2\. 索引
        • 2.1 索引概述
        • 2.2 索引優(yōu)勢劣勢
        • 2.3 索引結(jié)構(gòu)
          • 2.3.1 BTREE 結(jié)構(gòu)
          • 2.3.3 B+TREE 結(jié)構(gòu)
          • 2.3.3 MySQL中的B+Tree
        • 2.4 索引分類
        • 2.5 索引語法
          • 2.5.1 創(chuàng)建索引
          • 2.5.2 查看索引
          • 2.5.3 刪除索引
          • 2.5.4 ALTER命令
        • 2.6 索引設(shè)計原則
      • 3\. 視圖
        • 3.1 視圖概述
        • 3.2 創(chuàng)建或者修改視圖
        • 3.3 查看視圖
        • 3.4 刪除視圖
      • 4\. 存儲過程和函數(shù)
        • 4.1 存儲過程和函數(shù)概述
        • 4.2 創(chuàng)建存儲過程
        • 4.3 調(diào)用存儲過程
        • 4.4 查看存儲過程
        • 4.5 刪除存儲過程
        • 4.6 語法
          • 4.6.1 變量
          • 4.6.2 if條件判斷
          • 4.6.3 傳遞參數(shù)
          • 4.6.4 case結(jié)構(gòu)
          • 4.6.5 while循環(huán)
          • 4.6.6 repeat結(jié)構(gòu)
          • 4.6.7 loop語句
          • 4.6.8 leave語句
          • 4.6.9 游標(biāo)/光標(biāo)
        • 4.7 存儲函數(shù)
      • 5\. 觸發(fā)器
        • 5.1 介紹
        • 5.2 創(chuàng)建觸發(fā)器
        • 5.3 刪除觸發(fā)器
        • 5.4 查看觸發(fā)器

1.1 下載Linux 安裝包

下載地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads

1.2 安裝MySQL

APACHE1). 卸載 centos 中預(yù)安裝的 mysqlrpm -qa | grep -i mysqlrpm -e mysql-libs-5.1.71-1.el6.x86_64 --nodeps2). 上傳 mysql 的安裝包alt + p -------> put E:/test/MySQL-5.6.22-1.el6.i686.rpm-bundle.tar3). 解壓 mysql 的安裝包 mkdir mysqltar -xvf MySQL-5.6.22-1.el6.i686.rpm-bundle.tar -C /root/mysql4). 安裝依賴包 yum -y install libaio.so.1 libgcc_s.so.1 libstdc++.so.6 libncurses.so.5 --setopt=protected_multilib=falseyum update libstdc++-4.4.7-4.el6.x86_645). 安裝 mysql-clientrpm -ivh MySQL-client-5.6.22-1.el6.i686.rpm6). 安裝 mysql-serverrpm -ivh MySQL-server-5.6.22-1.el6.i686.rpm

1.3 啟動 MySQL 服務(wù)

SQLservice mysql startservice mysql stopservice mysql statusservice mysql restart

1.4 登錄MySQL

mysql 安裝完成之后, 會自動生成一個隨機的密碼, 并且保存在一個密碼文件中 : /root/.mysql_secretmysql -u root -p 登錄之后, 修改密碼 :set password = password('itcast');授權(quán)遠程訪問 : grant all privileges on *.* to 'root' @'%' identified by 'itcast'; flush privileges;

2. 索引

2.1 索引概述

MySQL官方對索引的定義為:索引(index)是幫助MySQL高效獲取數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)(有序)。在數(shù)據(jù)之外,數(shù)據(jù)庫系統(tǒng)還維護者滿足特定查找算法的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)結(jié)構(gòu)以某種方式引用(指向)數(shù)據(jù), 這樣就可以在這些數(shù)據(jù)結(jié)構(gòu)上實現(xiàn)高級查找算法,這種數(shù)據(jù)結(jié)構(gòu)就是索引。如下面的示意圖所示

左邊是數(shù)據(jù)表,一共有兩列七條記錄,最左邊的是數(shù)據(jù)記錄的物理地址(注意邏輯上相鄰的記錄在磁盤上也并不是一定物理相鄰的)。為了加快Col2的查找,可以維護一個右邊所示的二叉查找樹,每個節(jié)點分別包含索引鍵值和一個指向?qū)?yīng)數(shù)據(jù)記錄物理地址的指針,這樣就可以運用二叉查找快速獲取到相應(yīng)數(shù)據(jù)。

一般來說索引本身也很大,不可能全部存儲在內(nèi)存中,因此索引往往以索引文件的形式存儲在磁盤上。索引是數(shù)據(jù)庫中用來提高性能的最常用的工具。

2.2 索引優(yōu)勢劣勢

優(yōu)勢

1) 類似于書籍的目錄索引,提高數(shù)據(jù)檢索的效率,降低數(shù)據(jù)庫的IO成本。

2) 通過索引列對數(shù)據(jù)進行排序,降低數(shù)據(jù)排序的成本,降低CPU的消耗。

劣勢

1) 實際上索引也是一張表,該表中保存了主鍵與索引字段,并指向?qū)嶓w類的記錄,所以索引列也是要占用空間的。

2) 雖然索引大大提高了查詢效率,同時卻也降低更新表的速度,如對表進行INSERT、UPDATE、DELETE。因為更新表時,MySQL 不僅要保存數(shù)據(jù),還要保存一下索引文件每次更新添加了索引列的字段,都會調(diào)整因為更新所帶來的鍵值變化后的索引信息。

2.3 索引結(jié)構(gòu)

索引是在MySQL的存儲引擎層中實現(xiàn)的,而不是在服務(wù)器層實現(xiàn)的。所以每種存儲引擎的索引都不一定完全相同,也不是所有的存儲引擎都支持所有的索引類型的。MySQL目前提供了以下4種索引:

  • BTREE 索引 : 最常見的索引類型,大部分索引都支持 B 樹索引。
  • HASH 索引:只有Memory引擎支持 , 使用場景簡單 。
  • R-tree 索引(空間索引):空間索引是MyISAM引擎的一個特殊索引類型,主要用于地理空間數(shù)據(jù)類型,通常使用較少,不做特別介紹。
  • Full-text (全文索引) :全文索引也是MyISAM的一個特殊索引類型,主要用于全文索引,InnoDB從Mysql5.6版本開始支持全文索引。

MyISAM、InnoDB、Memory三種存儲引擎對各種索引類型的支持

索引InnoDB引擎MyISAM引擎Memory引擎
BTREE索引支持支持支持
HASH 索引不支持不支持支持
R-tree 索引不支持支持不支持
Full-text5.6版本之后支持支持不支持

我們平常所說的索引,如果沒有特別指明,都是指B+樹(多路搜索樹,并不一定是二叉的)結(jié)構(gòu)組織的索引。其中聚集索引、復(fù)合索引、前綴索引、唯一索引默認都是使用 B+tree 索引,統(tǒng)稱為 索引。

2.3.1 BTREE 結(jié)構(gòu)

BTree又叫多路平衡搜索樹,一顆m叉的BTree特性如下:

  • 樹中每個節(jié)點最多包含m個孩子。
  • 除根節(jié)點與葉子節(jié)點外,每個節(jié)點至少有[ceil(m/2)]個孩子。
  • 若根節(jié)點不是葉子節(jié)點,則至少有兩個孩子。
  • 所有的葉子節(jié)點都在同一層。
  • 每個非葉子節(jié)點由n個key與n+1個指針組成,其中[ceil(m/2)-1] <= n <= m-1

以5叉BTree為例,key的數(shù)量:公式推導(dǎo)[ceil(m/2)-1] <= n <= m-1。所以 2 <= n <=4 。當(dāng)n>4時,中間節(jié)點分裂到父節(jié)點,兩邊節(jié)點分裂。

插入 C N G A H E K Q M F W L T Z D P R X Y S 數(shù)據(jù)為例。

演變過程如下:

1). 插入前4個字母 C N G A

2). 插入H,n>4,中間元素G字母向上分裂到新的節(jié)點

3). 插入E,K,Q不需要分裂

4). 插入M,中間元素M字母向上分裂到父節(jié)點G

5). 插入F,W,L,T不需要分裂

6). 插入Z,中間元素T向上分裂到父節(jié)點中

7). 插入D,中間元素D向上分裂到父節(jié)點中。然后插入P,R,X,Y不需要分裂

8). 最后插入S,NPQR節(jié)點n>5,中間節(jié)點Q向上分裂,但分裂后父節(jié)點DGMT的n>5,中間節(jié)點M向上分裂

到此,該BTREE樹就已經(jīng)構(gòu)建完成了, BTREE樹 和 二叉樹 相比, 查詢數(shù)據(jù)的效率更高, 因為對于相同的數(shù)據(jù)量來說,BTREE的層級結(jié)構(gòu)比二叉樹小,因此搜索速度快。

2.3.3 B+TREE 結(jié)構(gòu)

B+Tree為BTree的變種,B+Tree與BTree的區(qū)別為:

1). n叉B+Tree最多含有n個key,而BTree最多含有n-1個key。

2). B+Tree的葉子節(jié)點保存所有的key信息,依key大小順序排列。

3). 所有的非葉子節(jié)點都可以看作是key的索引部分。

由于B+Tree只有葉子節(jié)點保存key信息,查詢?nèi)魏蝛ey都要從root走到葉子。所以B+Tree的查詢效率更加穩(wěn)定。

2.3.3 MySQL中的B+Tree

MySql索引數(shù)據(jù)結(jié)構(gòu)對經(jīng)典的B+Tree進行了優(yōu)化。在原B+Tree的基礎(chǔ)上,增加一個指向相鄰葉子節(jié)點的鏈表指針,就形成了帶有順序指針的B+Tree,提高區(qū)間訪問的性能。

MySQL中的 B+Tree 索引結(jié)構(gòu)示意圖:

2.4 索引分類

1) 單值索引 :即一個索引只包含單個列,一個表可以有多個單列索引

2) 唯一索引 :索引列的值必須唯一,但允許有空值

3) 復(fù)合索引 :即一個索引包含多個列

2.5 索引語法

索引在創(chuàng)建表的時候,可以同時創(chuàng)建, 也可以隨時增加新的索引。

準(zhǔn)備環(huán)境:

create database demo_01 default charset=utf8mb4;use demo_01;CREATE TABLE `city` (`city_id` int(11) NOT NULL AUTO_INCREMENT,`city_name` varchar(50) NOT NULL,`country_id` int(11) NOT NULL,PRIMARY KEY (`city_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;CREATE TABLE `country` (`country_id` int(11) NOT NULL AUTO_INCREMENT,`country_name` varchar(100) NOT NULL,PRIMARY KEY (`country_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into `city` (`city_id`, `city_name`, `country_id`) values(1,'西安',1); insert into `city` (`city_id`, `city_name`, `country_id`) values(2,'NewYork',2); insert into `city` (`city_id`, `city_name`, `country_id`) values(3,'北京',1); insert into `city` (`city_id`, `city_name`, `country_id`) values(4,'上海',1);insert into `country` (`country_id`, `country_name`) values(1,'China'); insert into `country` (`country_id`, `country_name`) values(2,'America'); insert into `country` (`country_id`, `country_name`) values(3,'Japan'); insert into `country` (`country_id`, `country_name`) values(4,'UK');
2.5.1 創(chuàng)建索引

語法 :

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON tbl_name(index_col_name,...)index_col_name : column_name[(length)][ASC | DESC]

示例 : 為city表中的city_name字段創(chuàng)建索引 ;

?

?

2.5.2 查看索引

語法:

`show index from table_name;`

示例:查看city表中的索引信息;

2.5.3 刪除索引

語法 :

SQLDROP INDEX index_name ON tbl_name;

示例 : 想要刪除city表上的索引idx_city_name,可以操作如下:

2.5.4 ALTER命令
SQL1). alter table tb_name add primary key(column_list); 該語句添加一個主鍵,這意味著索引值必須是唯一的,且不能為NULL2). alter table tb_name add unique index_name(column_list);這條語句創(chuàng)建索引的值必須是唯一的(除了NULL外,NULL可能會出現(xiàn)多次)3). alter table tb_name add index index_name(column_list);添加普通索引, 索引值可以出現(xiàn)多次。4). alter table tb_name add fulltext index_name(column_list);該語句指定了索引為FULLTEXT, 用于全文索引

2.6 索引設(shè)計原則

? 索引的設(shè)計可以遵循一些已有的原則,創(chuàng)建索引的時候請盡量考慮符合這些原則,便于提升索引的使用效率,更高效的使用索引。

  • 對查詢頻次較高,且數(shù)據(jù)量比較大的表建立索引。

  • 索引字段的選擇,最佳候選列應(yīng)當(dāng)從where子句的條件中提取,如果where子句中的組合比較多,那么應(yīng)當(dāng)挑選最常用、過濾效果最好的列的組合。

  • 使用唯一索引,區(qū)分度越高,使用索引的效率越高。

  • 索引可以有效的提升查詢數(shù)據(jù)的效率,但索引數(shù)量不是多多益善,索引越多,維護索引的代價自然也就水漲船高。對于插入、更新、刪除等DML操作比較頻繁的表來說,索引過多,會引入相當(dāng)高的維護代價,降低DML操作的效率,增加相應(yīng)操作的時間消耗。另外索引過多的話,MySQL也會犯選擇困難病,雖然最終仍然會找到一個可用的索引,但無疑提高了選擇的代價。

  • 使用短索引,索引創(chuàng)建之后也是使用硬盤來存儲的,因此提升索引訪問的I/O效率,也可以提升總體的訪問效率。假如構(gòu)成索引的字段總長度比較短,那么在給定大小的存儲塊內(nèi)可以存儲更多的索引值,相應(yīng)的可以有效的提升MySQL訪問索引的I/O效率。

  • 利用最左前綴,N個列組合而成的組合索引,那么相當(dāng)于是創(chuàng)建了N個索引,如果查詢時where子句中使用了組成該索引的前幾個字段,那么這條查詢SQL可以利用組合索引來提升查詢效率。

創(chuàng)建復(fù)合索引:CREATE INDEX idx_name_email_status ON tb_seller(NAME,email,STATUS);就相當(dāng)于對name 創(chuàng)建索引 ;對name , email 創(chuàng)建了索引 ;對name , email, status 創(chuàng)建了索引 ;

3. 視圖

3.1 視圖概述

? 視圖(View)是一種虛擬存在的表。視圖并不在數(shù)據(jù)庫中實際存在,行和列數(shù)據(jù)來自定義視圖的查詢中使用的表,并且是在使用視圖時動態(tài)生成的。通俗的講,視圖就是一條SELECT語句執(zhí)行后返回的結(jié)果集。所以我們在創(chuàng)建視圖的時候,主要的工作就落在創(chuàng)建這條SQL查詢語句上。

視圖相對于普通的表的優(yōu)勢主要包括以下幾項。

  • 簡單:使用視圖的用戶完全不需要關(guān)心后面對應(yīng)的表的結(jié)構(gòu)、關(guān)聯(lián)條件和篩選條件,對用戶來說已經(jīng)是過濾好的復(fù)合條件的結(jié)果集。
  • 安全:使用視圖的用戶只能訪問他們被允許查詢的結(jié)果集,對表的權(quán)限管理并不能限制到某個行某個列,但是通過視圖就可以簡單的實現(xiàn)。
  • 數(shù)據(jù)獨立:一旦視圖的結(jié)構(gòu)確定了,可以屏蔽表結(jié)構(gòu)變化對用戶的影響,源表增加列對視圖沒有影響;源表修改列名,則可以通過修改視圖來解決,不會造成對訪問者的影響。

3.2 創(chuàng)建或者修改視圖

創(chuàng)建視圖的語法為:

SQLCREATE [OR REPLACE] [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]VIEW view_name [(column_list)]AS select_statement[WITH [CASCADED | LOCAL] CHECK OPTION]

修改視圖的語法為:

ALTER [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE}]VIEW view_name [(column_list)]AS select_statement[WITH [CASCADED | LOCAL] CHECK OPTION]

SQL

選項 :WITH [CASCADED | LOCAL] CHECK OPTION `決定了是否允許更新數(shù)據(jù)使記錄不再滿足視圖的條件。

LOCAL : 只要滿足本視圖的條件就可以更新。 CASCADED : 必須滿足所有針對該視圖的所有視圖的條件才可以更新。 默認值.

示例 , 創(chuàng)建city_country_view視圖 , 執(zhí)行如下SQL :

`create or replace view city_country_view as select t.*,c.country_name from country c , city t where c.country_id = t.country_id;

查詢視圖 :

3.3 查看視圖

? 從 MySQL 5.1 版本開始,使用 SHOW TABLES 命令的時候不僅顯示表的名字,同時也會顯示視圖的名字,而不存在單獨顯示視圖的 SHOW VIEWS 命令。

同樣,在使用 SHOW TABLE STATUS 命令的時候,不但可以顯示表的信息,同時也可以顯示視圖的信息。

如果需要查詢某個視圖的定義,可以使用 SHOW CREATE VIEW 命令進行查看 :

3.4 刪除視圖

語法 :

SQL`DROP VIEW [IF EXISTS] view_name [, view_name] ...[RESTRICT | CASCADE]

示例 , 刪除視圖city_country_view :

SQL`DROP VIEW city_country_view ;

4. 存儲過程和函數(shù)

4.1 存儲過程和函數(shù)概述

? 存儲過程和函數(shù)是 事先經(jīng)過編譯并存儲在數(shù)據(jù)庫中的一段 SQL 語句的集合,調(diào)用存儲過程和函數(shù)可以簡化應(yīng)用開發(fā)人員的很多工作,減少數(shù)據(jù)在數(shù)據(jù)庫和應(yīng)用服務(wù)器之間的傳輸,對于提高數(shù)據(jù)處理的效率是有好處的。

? 存儲過程和函數(shù)的區(qū)別在于函數(shù)必須有返回值,而存儲過程沒有。

? 函數(shù) : 是一個有返回值的過程 ;

? 過程 : 是一個沒有返回值的函數(shù) ;

4.2 創(chuàng)建存儲過程

`CREATE PROCEDURE procedure_name ([proc_parameter[,...]]) begin-- SQL語句 end ;

示例 :

delimiter $create procedure pro_test1() beginselect 'Hello Mysql' ; end$delimiter ;

知識小貼士

DELIMITER

? 該關(guān)鍵字用來聲明SQL語句的分隔符 , 告訴 MySQL 解釋器,該段命令是否已經(jīng)結(jié)束了,mysql是否可以執(zhí)行了。默認情況下,delimiter是分號;。在命令行客戶端中,如果有一行命令以分號結(jié)束,那么回車后,mysql將會執(zhí)行該命令。

4.3 調(diào)用存儲過程

call procedure_name() ;

4.4 查看存儲過程

-- 查詢db_name數(shù)據(jù)庫中的所有的存儲過程 select name from mysql.proc where db='db_name';-- 查詢存儲過程的狀態(tài)信息 show procedure status;-- 查詢某個存儲過程的定義 show create procedure test.pro_test1 \G;

4.5 刪除存儲過程

`DROP PROCEDURE [IF EXISTS] sp_name ;

4.6 語法

存儲過程是可以編程的,意味著可以使用變量,表達式,控制結(jié)構(gòu) , 來完成比較復(fù)雜的功能。

4.6.1 變量
  • DECLARE

    通過 DECLARE 可以定義一個局部變量,該變量的作用范圍只能在 BEGIN…END 塊中。

SQL`DECLARE var_name[,...] type [DEFAULT value]`

示例 :

delimiter $create procedure pro_test2() begin declare num int default 5;select num+ 10; end$delimiter ;
  • SET

直接賦值使用 SET,可以賦常量或者賦表達式,具體語法如下:

NGINXSET var_name = expr [, var_name = expr] ...`

示例 :

DELIMITER $CREATE PROCEDURE pro_test3()BEGINDECLARE NAME VARCHAR(20);SET NAME = 'MYSQL';SELECT NAME ;END$DELIMITER ;

也可以通過select … into 方式進行賦值操作 :

DELIMITER $CREATE PROCEDURE pro_test5() BEGINdeclare countnum int;select count(*) into countnum from city;select countnum; END$DELIMITER ;
4.6.2 if條件判斷

語法結(jié)構(gòu) :

if search_condition then statement_list[elseif search_condition then statement_list] ...[else statement_list]end if;

需求:

YAML根據(jù)定義的身高變量,判定當(dāng)前身高的所屬的身材類型 180 及以上 ----------> 身材高挑170 - 180 ---------> 標(biāo)準(zhǔn)身材170 以下 ----------> 一般身材

示例 :

delimiter $create procedure pro_test6() begindeclare height int default 175; declare description varchar(50);if height >= 180 thenset description = '身材高挑';elseif height >= 170 and height < 180 thenset description = '標(biāo)準(zhǔn)身材';elseset description = '一般身材';end if;select description ; end$delimiter ;

調(diào)用結(jié)果為 :

4.6.3 傳遞參數(shù)

語法格式 :

DELPHIcreate procedure procedure_name([in/out/inout] 參數(shù)名 參數(shù)類型) ...IN : 該參數(shù)可以作為輸入,也就是需要調(diào)用方傳入值 , 默認 OUT: 該參數(shù)作為輸出,也就是該參數(shù)可以作為返回值 INOUT: 既可以作為輸入?yún)?shù),也可以作為輸出參數(shù)

IN - 輸入

需求 :

`根據(jù)定義的身高變量,判定當(dāng)前身高的所屬的身材類型 示例 :```cdelimiter $create procedure pro_test5(in height int) begindeclare description varchar(50) default '';if height >= 180 thenset description='身材高挑';elseif height >= 170 and height < 180 thenset description='標(biāo)準(zhǔn)身材';elseset description='一般身材';end if;select concat('身高 ', height , '對應(yīng)的身材類型為:',description); end$delimiter ;

OUT-輸出

需求 :

根據(jù)傳入的身高變量,獲取當(dāng)前身高的所屬的身材類型`

示例:

create procedure pro_test5(in height int , out description varchar(100)) beginif height >= 180 thenset description='身材高挑';elseif height >= 170 and height < 180 thenset description='標(biāo)準(zhǔn)身材';elseset description='一般身材';end if; end

調(diào)用:

NGINX`call pro_test5(168, @description)$select @description

小知識

@description : 這種變量要在變量名稱前面加上“@”符號,叫做用戶會話變量,代表整個會話過程他都是有作用的,這個類似于全局變量一樣。

@@global.sort_buffer_size : 這種在變量前加上 “@@” 符號, 叫做 系統(tǒng)變量

4.6.4 case結(jié)構(gòu)

語法結(jié)構(gòu) :

`方式一 : CASE case_valueWHEN when_value THEN statement_list[WHEN when_value THEN statement_list] ...[ELSE statement_list]END CASE;方式二 : CASEWHEN search_condition THEN statement_list[WHEN search_condition THEN statement_list] ...[ELSE statement_list]END CASE;`

需求:

* 1`給定一個月份, 然后計算出所在的季度`

示例 :

`delimiter $create procedure pro_test9(month int) begindeclare result varchar(20);case when month >= 1 and month <=3 then set result = '第一季度';when month >= 4 and month <=6 then set result = '第二季度';when month >= 7 and month <=9 then set result = '第三季度';when month >= 10 and month <=12 then set result = '第四季度';end case;select concat('您輸入的月份為 :', month , ' , 該月份為 : ' , result) as content ;end$delimiter ;`
4.6.5 while循環(huán)

語法結(jié)構(gòu):

while search_condition dostatement_listend while;

需求:

`計算從1加到n的值`

示例 :

delimiter $create procedure pro_test8(n int) begindeclare total int default 0;declare num int default 1;while num<=n doset total = total + num;set num = num + 1;end while;select total; end$delimiter ;
4.6.6 repeat結(jié)構(gòu)

有條件的循環(huán)控制語句, 當(dāng)滿足條件的時候退出循環(huán) 。while 是滿足條件才執(zhí)行,repeat 是滿足條件就退出循環(huán)。

語法結(jié)構(gòu) :

`REPEATstatement_listUNTIL search_conditionEND REPEAT;

需求:

`計算從1加到n的值

示例 :

delimiter $create procedure pro_test10(n int) begindeclare total int default 0;repeat set total = total + n;set n = n - 1;until n=0 end repeat;select total ;end$delimiter ;
4.6.7 loop語句

LOOP 實現(xiàn)簡單的循環(huán),退出循環(huán)的條件需要使用其他的語句定義,通常可以使用 LEAVE 語句實現(xiàn),具體語法如下:

`[begin_label:] LOOPstatement_listEND LOOP [end_label]`

如果不在 statement_list 中增加退出循環(huán)的語句,那么 LOOP 語句可以用來實現(xiàn)簡單的死循環(huán)。

4.6.8 leave語句

用來從標(biāo)注的流程構(gòu)造中退出,通常和 BEGIN … END 或者循環(huán)一起使用。下面是一個使用 LOOP 和 LEAVE 的簡單例子 , 退出循環(huán):

delimiter $CREATE PROCEDURE pro_test11(n int) BEGINdeclare total int default 0;ins: LOOPIF n <= 0 thenleave ins;END IF;set total = total + n;set n = n - 1;END LOOP ins;select total; END$delimiter ;
4.6.9 游標(biāo)/光標(biāo)

游標(biāo)是用來存儲查詢結(jié)果集的數(shù)據(jù)類型 , 在存儲過程和函數(shù)中可以使用光標(biāo)對結(jié)果集進行循環(huán)的處理。光標(biāo)的使用包括光標(biāo)的聲明、OPEN、FETCH 和 CLOSE,其語法分別如下。

聲明光標(biāo):

SQL`DECLARE cursor_name CURSOR FOR select_statement

OPEN 光標(biāo):

OPEN cursor_name ;

FETCH 光標(biāo):

FETCH cursor_name INTO var_name [, var_name] ...

CLOSE 光標(biāo):

CLOSE cursor_name ;

示例 :

初始化腳本:

create table emp(id int(11) not null auto_increment ,name varchar(50) not null comment '姓名',age int(11) comment '年齡',salary int(11) comment '薪水',primary key(`id`) )engine=innodb default charset=utf8 ;insert into emp(id,name,age,salary) values(null,'金毛獅王',55,3800),(null,'白眉鷹王',60,4000),(null,'青翼蝠王',38,2800),(null,'紫衫龍王',42,1800); -- 查詢emp表中數(shù)據(jù), 并逐行獲取進行展示 create procedure pro_test11() begindeclare e_id int(11);declare e_name varchar(50);declare e_age int(11);declare e_salary int(11);declare emp_result cursor for select * from emp;open emp_result;fetch emp_result into e_id,e_name,e_age,e_salary;select concat('id=',e_id , ', name=',e_name, ', age=', e_age, ', 薪資為: ',e_salary);fetch emp_result into e_id,e_name,e_age,e_salary;select concat('id=',e_id , ', name=',e_name, ', age=', e_age, ', 薪資為: ',e_salary);fetch emp_result into e_id,e_name,e_age,e_salary;select concat('id=',e_id , ', name=',e_name, ', age=', e_age, ', 薪資為: ',e_salary);fetch emp_result into e_id,e_name,e_age,e_salary;select concat('id=',e_id , ', name=',e_name, ', age=', e_age, ', 薪資為: ',e_salary);fetch emp_result into e_id,e_name,e_age,e_salary;select concat('id=',e_id , ', name=',e_name, ', age=', e_age, ', 薪資為: ',e_salary);close emp_result; end

通過循環(huán)結(jié)構(gòu) , 獲取游標(biāo)中的數(shù)據(jù) :

`DELIMITER $create procedure pro_test12() beginDECLARE id int(11);DECLARE name varchar(50);DECLARE age int(11);DECLARE salary int(11);DECLARE has_data int default 1;DECLARE emp_result CURSOR FOR select * from emp;DECLARE EXIT HANDLER FOR NOT FOUND set has_data = 0;open emp_result;repeatfetch emp_result into id , name , age , salary;select concat('id為',id, ', name 為' ,name , ', age為 ' ,age , ', 薪水為: ', salary);until has_data = 0end repeat;close emp_result; end$DELIMITER ;

4.7 存儲函數(shù)

語法結(jié)構(gòu):

CREATE FUNCTION function_name([param type ... ]) RETURNS type BEGIN... END;

案例 :

定義一個存儲過程, 請求滿足條件的總記錄數(shù) ;

delimiter $create function count_city(countryId int) returns int begindeclare cnum int ;select count(*) into cnum from city where country_id = countryId;return cnum; end$delimiter ;

調(diào)用:

CSHARP`select count_city(1);select count_city(2);

5. 觸發(fā)器

5.1 介紹

觸發(fā)器是與表有關(guān)的數(shù)據(jù)庫對象,指在 insert/update/delete 之前或之后,觸發(fā)并執(zhí)行觸發(fā)器中定義的SQL語句集合。觸發(fā)器的這種特性可以協(xié)助應(yīng)用在數(shù)據(jù)庫端確保數(shù)據(jù)的完整性 , 日志記錄 , 數(shù)據(jù)校驗等操作 。

使用別名 OLD 和 NEW 來引用觸發(fā)器中發(fā)生變化的記錄內(nèi)容,這與其他的數(shù)據(jù)庫是相似的。現(xiàn)在觸發(fā)器還只支持行級觸發(fā),不支持語句級觸發(fā)。

觸發(fā)器類型NEW 和 OLD的使用
INSERT 型觸發(fā)器NEW 表示將要或者已經(jīng)新增的數(shù)據(jù)
UPDATE 型觸發(fā)器OLD 表示修改之前的數(shù)據(jù) , NEW 表示將要或已經(jīng)修改后的數(shù)據(jù)
DELETE 型觸發(fā)器OLD 表示將要或者已經(jīng)刪除的數(shù)據(jù)

5.2 創(chuàng)建觸發(fā)器

語法結(jié)構(gòu) :

create trigger trigger_name before/after insert/update/deleteon tbl_name [ for each row ] -- 行級觸發(fā)器begintrigger_stmt ;end;

示例

需求

通過觸發(fā)器記錄 emp 表的數(shù)據(jù)變更日志 , 包含增加, 修改 , 刪除 ;

首先創(chuàng)建一張日志表 :

create table emp_logs(id int(11) not null auto_increment,operation varchar(20) not null comment '操作類型, insert/update/delete',operate_time datetime not null comment '操作時間',operate_id int(11) not null comment '操作表的ID',operate_params varchar(500) comment '操作參數(shù)',primary key(`id`) )engine=innodb default charset=utf8;

創(chuàng)建 insert 型觸發(fā)器,完成插入數(shù)據(jù)時的日志記錄 :

`DELIMITER $create trigger emp_logs_insert_trigger after insert on emp for each row begininsert into emp_logs (id,operation,operate_time,operate_id,operate_params) values(null,'insert',now(),new.id,concat('插入后(id:',new.id,', name:',new.name,', age:',new.age,', salary:',new.salary,')')); end $DELIMITER ;

創(chuàng)建 update 型觸發(fā)器,完成更新數(shù)據(jù)時的日志記錄 :

`DELIMITER $create trigger emp_logs_update_trigger after update on emp for each row begininsert into emp_logs (id,operation,operate_time,operate_id,operate_params) values(null,'update',now(),new.id,concat('修改前(id:',old.id,', name:',old.name,', age:',old.age,', salary:',old.salary,') , 修改后(id',new.id, 'name:',new.name,', age:',new.age,', salary:',new.salary,')')); end $DELIMITER

創(chuàng)建delete 行的觸發(fā)器 , 完成刪除數(shù)據(jù)時的日志記錄 :

DELIMITER $create trigger emp_logs_delete_trigger after delete on emp for each row begininsert into emp_logs (id,operation,operate_time,operate_id,operate_params) values(null,'delete',now(),old.id,concat('刪除前(id:',old.id,', name:',old.name,', age:',old.age,', salary:',old.salary,')')); end $DELIMITER ;

測試:

`insert into emp(id,name,age,salary) values(null, '光明左使',30,3500); insert into emp(id,name,age,salary) values(null, '光明右使',33,3200);update emp set age = 39 where id = 3;delete from emp where id = 5;

5.3 刪除觸發(fā)器

語法結(jié)構(gòu) :

drop trigger [schema_name.]trigger_name

如果沒有指定 schema_name,默認為當(dāng)前數(shù)據(jù)庫 。

5.4 查看觸發(fā)器

可以通過執(zhí)行 SHOW TRIGGERS 命令查看觸發(fā)器的狀態(tài)、語法等信息。

語法結(jié)構(gòu) :

SQL`show triggers ;

最后,祝大家早日學(xué)有所成,拿到滿意offer

總結(jié)

以上是生活随笔為你收集整理的超详细图解!【MySQL进阶篇】存储过程,视图,索引,函数,触发器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

日p在线观看 | 天天色综合1 | 欧美日韩18| 日韩精品视频在线免费观看 | 91精品久久久久久粉嫩 | 久久深夜福利免费观看 | 亚洲成人精品影院 | 午夜av剧场 | 日韩电影在线观看一区二区三区 | 国产手机视频 | 欧美精品视 | 91大神精品视频在线观看 | 国产91对白在线播 | 久久国产综合视频 | 中文字幕av在线免费 | 久久视精品| 婷婷久久久 | 日韩高清黄色 | 日韩一区二区三区在线观看 | 麻豆视频免费在线观看 | 国产精品久久久久一区二区三区共 | 久草在线免费看视频 | 欧美亚洲免费在线一区 | 国产成人一区二区三区电影 | 波多野结衣综合网 | 久久久久久麻豆 | 一区二区三区免费在线观看视频 | 中文高清av| 成人免费网站视频 | 免费在线国产黄色 | 中文字幕在线视频第一页 | 探花视频免费观看 | 午夜视频亚洲 | 日韩电影在线观看一区 | 国产精品久久久久久久久久久久午 | 国产精品永久久久久久久www | 69久久夜色精品国产69 | 一区二区三区日韩在线观看 | 91最新地址永久入口 | 午夜视频在线瓜伦 | 韩日精品视频 | 亚洲视频在线看 | 久久久久久国产精品亚洲78 | 伊人电影在线观看 | 99久久久精品 | 一区二区三区四区精品视频 | 天堂麻豆 | 精品成人a区在线观看 | 婷婷午夜天 | 日韩欧美大片免费观看 | 久久午夜鲁丝片 | 中文字幕在线看视频 | 免费av一级电影 | 日日摸日日添夜夜爽97 | 探花视频免费在线观看 | 亚洲激情国产精品 | 在线免费成人 | 日韩一区二区三区不卡 | 高潮毛片无遮挡高清免费 | 麻豆成人在线观看 | 国产精品久久久久久69 | 国产精品破处视频 | 在线亚洲欧美视频 | 色综合天天在线 | 久久综合九色综合久久久精品综合 | 波多野结衣资源 | 在线免费国产视频 | 色综合久久88色综合天天6 | 91av在线电影 | 国产日韩欧美视频在线观看 | 国产999精品久久久久久绿帽 | 亚洲人成在线观看 | 午夜久久福利视频 | 色婷婷国产精品一区在线观看 | 国产一区二区在线免费视频 | 久久综合视频网 | 欧美一二在线 | 97爱爱爱 | 久久久久中文 | 午夜视频在线观看一区 | 天天婷婷 | 久久九九国产精品 | 亚洲国产wwwccc36天堂 | 999精品在线 | 成人黄色小说在线观看 | 成人国产精品久久久久久亚洲 | av一级片在线观看 | 久久夜色网 | 国产精品久久久久久久久久久不卡 | 色网站在线免费观看 | 奇米影视四色8888 | 黄色电影网站在线观看 | 色综合www | 九月婷婷色| 在线观看久 | 国产精品美女久久久 | 成人av在线资源 | 久久精品网站视频 | 日韩欧美黄色网址 | 国产精品综合久久久 | 日本中文字幕高清 | 成人午夜电影在线观看 | 精品国产一区二区三区久久久蜜臀 | 天天干天天草天天爽 | 国内精品久久久久影院一蜜桃 | 黄色一级免费网站 | 婷婷婷国产在线视频 | 亚洲三级黄色 | 欧美aaaxxxx做受视频 | 91黄色影视 | 国产精品久久久久av免费 | 伊人天堂网 | 久久国产二区 | 欧美精品在线视频 | 五月的婷婷 | 免费观看国产成人 | 波多野结衣综合网 | www国产精品com | 97**国产露脸精品国产 | 一级片视频在线 | 亚洲黄色一级视频 | 国产精品区免费视频 | 欧美一二三区在线观看 | 国产亚洲精品日韩在线tv黄 | 免费看av在线 | www日日夜夜| 国产亚洲在线 | 日本中文字幕观看 | av解说在线观看 | 韩日精品中文字幕 | 中文字幕精品一区久久久久 | 在线不卡的av | 96av麻豆蜜桃一区二区 | 国产白浆视频 | 婷婷综合导航 | 亚洲成人黄色在线观看 | 国产九色视频在线观看 | 五月天堂网 | 精品成人在线 | 亚洲国产精品500在线观看 | 免费人做人爱www的视 | 亚洲一区二区麻豆 | 97超碰香蕉 | av在线电影播放 | 一级片免费视频 | 日韩国产精品久久久久久亚洲 | 国产成人中文字幕 | 国产精品一区二区吃奶在线观看 | 中文字幕在线高清 | 93久久精品日日躁夜夜躁欧美 | 97av精品 | 24小时日本在线www免费的 | 国产视频精品免费播放 | 正在播放一区二区 | 一区二区三区四区精品视频 | 日本动漫做毛片一区二区 | 91在线成人| 91视频免费看 | 香蕉视频免费在线播放 | 婷婷在线视频观看 | 国产91小视频 | 国内精品久久久久久久久久清纯 | 中国美女一级看片 | 人人看97| 精品美女久久久久久免费 | 美女网站在线 | 最新国产一区二区三区 | 日韩精品一区电影 | 最新成人av | 国产成人精品一区在线 | 亚洲精品日韩在线观看 | av一级片 | 日韩三级中文字幕 | 天天干.com| 天天透天天插 | 500部大龄熟乱视频 欧美日本三级 | 四虎影视精品成人 | 在线看的毛片 | 色老板在线视频 | 狠狠狠狠干 | 久久精品视 | 最近中文字幕在线播放 | 天天草天天| 国产偷国产偷亚洲清高 | 国内精品久久天天躁人人爽 | 特级毛片在线观看 | 91亚洲精品久久久蜜桃借种 | 日韩久久久久久久久久久久 | 久草 | 精品亚洲免a | 精品免费观看视频 | 又大又硬又黄又爽视频在线观看 | 国产手机视频 | 亚洲黄a | 深夜男人影院 | 国产日韩欧美在线影视 | 久热免费| 992tv在线观看 | 色开心| 91av在线视频播放 | 一区二区久久久久 | 国产精品久久久久三级 | 国产精品久久久久久久久久免费 | 超级碰99| 91 在线视频| 91高清免费在线观看 | www.色婷婷.com | 在线观看亚洲国产 | 992tv在线观看 | 免费观看丰满少妇做爰 | 97精品伊人 | 色欧美成人精品a∨在线观看 | 涩涩资源网 | 天天色中文 | 91成人免费在线视频 | 欧美成年性 | 中文字幕免费高 | 最近字幕在线观看第一季 | 日韩夜夜爽 | 色九九影院 | 国产精品久久久久久爽爽爽 | 91九色自拍 | 亚洲精品视频网址 | 久久热首页| 国产人成免费视频 | 九九在线免费视频 | 免费看精品久久片 | 91精品国产综合久久婷婷香蕉 | 园产精品久久久久久久7电影 | 综合中文字幕 | 久久久久国产一区二区三区四区 | 久久久资源网 | 国产成人在线一区 | 六月色 | 欧美国产日韩激情 | 超级碰视频| 久草在线费播放视频 | 狠狠综合网| 91在线播放国产 | 中文字幕在线观看一区二区 | 天天色天天操天天爽 | 人人精品久久 | 久久99精品国产一区二区三区 | 国产日本在线观看 | 欧洲高潮三级做爰 | 中文av网站| 亚洲撸撸 | 五月开心色 | 亚洲专区视频在线观看 | 欧美日韩国产一二三区 | 国产日韩欧美视频在线观看 | 91一区二区在线 | 国产精品99久久久久久有的能看 | 国产无遮挡又黄又爽在线观看 | 狠狠色伊人亚洲综合网站野外 | 国产免费激情久久 | 国产中文伊人 | 亚洲美女视频在线观看 | 三级av在线| 中文字幕在线观看第二页 | 97成人免费视频 | 天天·日日日干 | 91毛片在线 | 四虎成人在线 | 日日夜操| 日本在线免费看 | 丁香六月婷婷开心 | 在线观看蜜桃视频 | www·22com天天操 | 欧美精品免费在线观看 | 五月婷婷欧美 | 欧美电影黄色 | 人人澡澡人人 | 色综合久久久久久中文网 | 精品国产精品久久 | av激情五月 | av在线永久免费观看 | 久久久福利 | 国产成人精品国内自产拍免费看 | 91网站在线视频 | 免费看久久 | 黄色网中文字幕 | 国产精品视频免费在线观看 | 首页国产精品 | 天天综合精品 | 99视频在线免费看 | 色综合久久久久综合99 | 成在线播放| 人人草在线视频 | 国产在线观看你懂得 | 成 人 免费 黄 色 视频 | 成人影视免费看 | 亚洲最新视频在线播放 | 天天av在线播放 | 国产精品色视频 | 国产麻豆精品免费视频 | 在线观看免费黄视频 | 婷婷社区五月天 | 久久久综合电影 | www.午夜| 黄色av成人在线观看 | 在线观看视频黄色 | 国产精品久久久久久久久久了 | 国产在线观看网站 | 综合黄色网 | 天天操夜夜逼 | 99久久国产免费,99久久国产免费大片 | 国产第一页精品 | 日本xxxx.com | 狠狠色狠狠色综合日日小说 | 久久精品男人的天堂 | 国产在线国产 | 久久欧美在线电影 | 91一区一区三区 | 国产精品乱码久久久 | 欧美日韩久久 | 美女中文字幕 | 免费在线播放av电影 | 黄色影院在线播放 | 欧美日韩一区二区在线观看 | 中文字幕一区二区三区四区 | 亚洲精品婷婷 | 五月天六月色 | 黄色一级动作片 | 在线国产99 | 国产成人三级在线播放 | 国产在线观看你懂得 | 欧美韩国日本在线观看 | 99热99| 日韩精品视频免费在线观看 | 91在线观看黄 | 麻豆视频在线观看免费 | www国产亚洲| 国产精品12 | 日韩一区二区三区高清免费看看 | 六月激情网 | 亚洲日韩欧美一区二区在线 | 久久9999久久免费精品国产 | 色婷婷综合成人av | av性网站 | 在线久草视频 | 一级黄色片网站 | 久久精品一区二区三区视频 | 婷婷五综合 | 久久免费精品 | 久久久婷 | 国产成人免费 | 最近中文字幕免费 | 免费观看丰满少妇做爰 | 亚洲成熟女人毛片在线 | 国产精品综合久久 | 久久福利电影 | 丁香激情综合 | 久久少妇 | 国产精品中文字幕在线 | 欧美特一级 | 综合av在线 | 午夜成人影视 | www.久久视频 | 久草国产在线观看 | 人人视频网站 | 91男人影院 | 人人澡人人模 | 奇米7777狠狠狠琪琪视频 | 亚洲综合一区二区精品导航 | 韩国精品一区二区三区六区色诱 | 成av人电影 | 日韩免| 成人av片免费看 | 国产精品久久久久久久久费观看 | 国产精品一区二区精品视频免费看 | 亚洲激情五月 | 久久成年人 | 国产在线色站 | 精品极品在线 | 日韩免费观看视频 | 人人插人人玩 | 毛片www | 91精品办公室少妇高潮对白 | 美女视频久久久 | 91免费观看网站 | 免费精品人在线二线三线 | www国产亚洲 | 免费观看久久 | 欧美一级日韩三级 | 久久永久视频 | 欧美成人理伦片 | 国产午夜小视频 | 国内久久精品 | 麻豆一区二区三区视频 | 中文在线字幕免 | 在线亚洲天堂网 | 国产91精品看黄网站 | 成人影片在线免费观看 | 欧美一级片免费在线观看 | 色欧美成人精品a∨在线观看 | 日韩av一区二区三区 | 中文字幕资源在线观看 | 国产精品久久久久久久久久久久久 | 99视频黄 | 天天色天天色 | 午夜av日韩| 亚洲黄色小说网址 | 久久伦理电影网 | 91成人午夜| 欧美精品网站 | 久久精品3| 国产一区二区在线免费 | 四虎国产精品成人免费4hu | 欧美一级特黄高清视频 | 999色视频 | 久久激情五月激情 | 久久国产欧美日韩 | 婷婷国产在线 | 四虎国产精品成人免费影视 | 国产精品久久久久久久久久白浆 | 日韩午夜电影院 | 精品国产一区二区三区av性色 | av888av.com | 成人h动漫精品一区二 | 美女很黄免费网站 | 午夜视频久久久 | 涩涩网站在线观看 | 在线视频 区| 亚洲国产中文字幕 | 国产中文字幕视频在线观看 | 成人av电影在线观看 | 免费色视频网站 | 国产精品久久久久久av | 69热国产视频 | 中文字幕乱码电影 | 精品久久久久久国产偷窥 | 五月天丁香视频 | 国产精品国产三级国产aⅴ入口 | 麻豆视频免费网站 | 中文字幕高清免费日韩视频在线 | 伊甸园av在线 | 男女拍拍免费视频 | 久久久久久久久久久影视 | 日本在线观看一区二区三区 | 99在线热播精品免费99热 | 亚洲一级黄色 | 国产一区视频免费在线观看 | 久热色超碰 | 草久中文字幕 | 96av在线视频 | 日本在线精品视频 | 国产精品成人一区二区 | 亚洲第一香蕉视频 | 最近中文字幕国语免费高清6 | 五月婷婷中文网 | 在线播放第一页 | 国产精品一区在线播放 | 超碰97人人干 | 91最新在线视频 | 日韩三级在线观看 | 香蕉视频在线免费 | 国产一性一爱一乱一交 | 丝袜美女在线观看 | 麻豆91在线观看 | 日夜夜精品视频 | 色美女在线 | 在线观看成人毛片 | 久久精品一区二区 | 91亚洲精品国偷拍自产在线观看 | 久久久久久久久久久久久国产精品 | 亚洲,播放 | 91精品视屏 | 激情综合色播五月 | 欧洲亚洲精品 | 天天插天天操天天干 | 久久综合爱| 国产精品com | 久草精品在线观看 | 超碰在线公开免费 | 91传媒在线看 | 欧美在线观看视频免费 | 国产露脸91国语对白 | 色吊丝在线永久观看最新版本 | 亚洲女欲精品久久久久久久18 | 国产精品视频内 | 婷婷六月丁香激情 | 日韩电影久久 | 婷婷九月激情 | 青草视频在线免费 | 中文字幕在线观看播放 | 玖玖视频在线 | 中文字幕日韩无 | 黄色精品久久久 | 久久免费美女视频 | 精品久久久久久久久久久久久久久久 | 成人av日韩 | 色婷婷综合成人av | 色人久久 | 精品久久久久国产 | 国产精品完整版 | 日韩在线免费视频观看 | 国产成人精品一区二区三区福利 | 免费日p视频 | 国产精品第一页在线观看 | 超碰97久久| 精品免费一区 | 成人午夜av电影 | 久久影院亚洲 | 999国内精品永久免费视频 | 欧美成人中文字幕 | 天天综合成人网 | 在线观看av不卡 | 天堂av免费看| 久久精品欧美日韩精品 | 久久999精品 | 国内外成人在线视频 | 黄色一级大片免费看 | 丁香婷婷激情国产高清秒播 | 久久天堂影院 | 丁香伊人网| 免费看片网页 | 久久精品香蕉 | 欧美一级日韩三级 | 免费福利片2019潦草影视午夜 | 亚洲成aⅴ人片久久青草影院 | 中文字幕在线看视频国产中文版 | 外国av网 | 免费在线一区二区三区 | 日韩欧美一区二区三区在线 | 久久久久久久久久久免费视频 | 国产精品自产拍在线观看中文 | 亚洲爽爽网| 成人三级网站在线观看 | 亚洲精品大片www | 日韩黄色一级电影 | 在线欧美小视频 | 波多野结衣电影一区二区三区 | 97超碰人人网| 欧美片一区二区三区 | 久久精品国产一区二区 | 在线不卡中文字幕播放 | 精品在线一区二区三区 | 精品久久久久_ | 免费高清在线观看成人 | 国产小视频在线观看 | 福利视频一区二区 | 午夜精品一区二区国产 | 久久精品国产久精国产 | 久久免费毛片视频 | 91.精品高清在线观看 | 国产高清av | 在线久热 | 日韩精品电影在线播放 | 久久av高清| 黄色片毛片 | 欧美午夜a| 久草国产视频 | 中文字幕第一页在线播放 | 亚洲视屏 | 欧美人交a欧美精品 | 久久精品99国产精品酒店日本 | 日韩久久电影 | 日韩精品欧美精品 | 国产精品va在线播放 | 国产精品99久久久久久人免费 | 精品一区二区在线看 | 日韩在线视频免费观看 | 在线探花| 欧美色道 | 久草视频国产 | 国产69久久久 | 国产精品专区在线观看 | 超碰伊人网| 日本最新中文字幕 | 91高清在线 | 中文字幕资源站 | 丁香视频五月 | 国产99一区 | 99久热在线精品视频观看 | 成人蜜桃| 免费av高清 | 国产福利精品在线观看 | 亚洲欧美综合 | 狠狠88综合久久久久综合网 | 久久激情五月婷婷 | 日韩免费网址 | 成人a在线观看高清电影 | 成人黄色小说网 | 99看视频在线观看 | 99re久久精品国产 | 久久久999免费视频 日韩网站在线 | 在线精品视频免费播放 | 色多多视频在线观看 | 一区二区电影在线观看 | 亚洲日本黄色 | 九九在线高清精品视频 | 色狠狠一区二区 | 国产亚洲免费观看 | 天天干天天上 | 色婷婷综合久久久 | 深夜免费福利 | 免费一级片在线 | 日韩欧美在线观看一区二区三区 | 婷婷丁香激情五月 | 久久久网页 | 黄色三几片| 亚洲精品免费在线 | 四虎海外影库www4hu | 99九九99九九九视频精品 | 亚洲人成影院在线 | 超碰在线观看97 | 成年人在线看片 | 天天爱天天色 | 黄色毛片电影 | 91精品啪 | 天天操天天干天天插 | 亚洲精品综合一区二区 | 亚洲国产中文在线观看 | 久草精品视频在线看网站免费 | 中文字幕在线看视频 | 亚洲高清在线 | 久久久久久高潮国产精品视 | 亚洲视频在线免费观看 | 天天做夜夜做 | 探花视频免费在线观看 | caobi视频| 亚洲国产999 | 91麻豆传媒 | 中文字幕一区二区三区四区 | 日韩二三区| 91视频免费看网站 | 日韩精品视 | 欧美亚洲久久 | 在线观影网站 | 欧美日本一二三 | 五月天欧美精品 | 一区二区三区电影在线播 | 久久亚洲婷婷 | 国产精品久久久久久久久免费看 | 国产午夜麻豆影院在线观看 | 久久久久久久久久电影 | 色天天久久 | 天天摸日日操 | 久久激情视频 久久 | 欧美黄色高清 | 亚洲免费激情 | 青青网视频| 国产成人亚洲在线观看 | 色视频网址 | 亚洲精品黄色在线观看 | 一级黄视频 | 91亚洲国产 | av视屏在线播放 | av手机版| 亚洲精品玖玖玖av在线看 | 中文字幕色在线视频 | 日本公妇在线观看高清 | 99久久精品国产亚洲 | 国产午夜av | 国产精品久久久久久久久搜平片 | 日韩免费高清 | 一区二区三区av在线 | 色噜噜在线观看视频 | 国产拍在线 | 日韩伦理片hd| 国产精品一区二区电影 | 亚洲黄网站 | 欧美91精品久久久久国产性生爱 | 天天综合网在线观看 | 国产福利av在线 | 中文字幕av在线免费 | 久久一区二区免费视频 | 99re久久资源最新地址 | 日本电影黄色 | 麻豆视频免费在线观看 | 亚洲影院色 | av中文在线影视 | 97超碰网 | 99精品国产高清在线观看 | 美女露久久 | 国产在线精品区 | 久久国产精品网站 | 婷婷在线视频观看 | 国产精品涩涩屋www在线观看 | 欧美精品做受xxx性少妇 | 色天堂在线视频 | japanesefreesex中国少妇 | 国产精品福利久久久 | 国产精品99久久99久久久二8 | 国产成人综合精品 | 啪啪资源 | 中文在线免费一区三区 | 亚洲黄在线观看 | 黄色片视频免费 | 在线观看视频精品 | 黄色一级大片在线免费看产 | 超碰在线个人 | 国产在线观看 | 久久久久久高潮国产精品视 | 波多野结依在线观看 | 天天做天天爱天天综合网 | 亚洲国产成人av网 | 国产精品久久久久久久久久不蜜月 | 久久成人精品 | 国产人成一区二区三区影院 | 黄色网址国产 | 五月天堂色 | 91高清免费在线观看 | 少妇bbb好爽| 免费裸体视频网 | 国产精品久久久久久麻豆一区 | 国产一区二区视频在线 | 亚洲综合涩 | 综合精品久久 | 二区三区av | 久久久18| 激情五月亚洲 | 在线91精品 | 欧美久久久久久久久 | 亚洲精品视频观看 | 欧美日韩国产一区二 | 久久国产精品免费看 | 色人久久 | 亚洲乱码在线 | 日本中文字幕在线看 | 99热国产在线中文 | 亚洲欧美精品一区 | 国产高清av免费在线观看 | 探花视频在线观看 | 在线观看www. | 黄网站大全 | av在线之家电影网站 | 伊人www22综合色 | 国产精品麻豆91 | 亚洲影视九九影院在线观看 | 麻豆精品在线 | 丁香激情五月婷婷 | 国产高清av | 亚洲国产成人精品电影在线观看 | 午夜视频二区 | 99热精品久久 | 日韩精品久久一区二区三区 | 国产高清在线看 | av一二三区 | 玖玖玖在线 | 久久观看免费视频 | 波多野结衣网址 | 色综合天天综合在线视频 | 精品91| 精品视频99 | 狠狠干网址| 国产手机在线观看 | 日批视频 | 亚洲黄色免费观看 | 在线观看免费国产小视频 | 欧美亚洲成人免费 | 亚洲成a人片77777kkkk1在线观看 | 美女视频一区二区 | 中文字幕无吗 | 国产自产高清不卡 | 高清视频一区二区三区 | 激情视频二区 | 欧美日韩二区在线 | 日韩电影精品 | 天堂在线视频免费观看 | www.777奇米 | 国产精品久久精品 | 免费www视频 | 亚洲电影院 | 精品伊人久久久 | 在线观看免费av网站 | 日韩免费观看一区二区 | 免费在线观看国产黄 | 免费视频xnxx com | 人人狠狠综合久久亚洲婷 | 久99久中文字幕在线 | 久久精品国产亚洲 | 色香蕉视频| 91在线超碰 | 国内精品毛片 | 人人玩人人添人人澡97 | 亚洲精品免费看 | 中文字幕精品视频 | 久久你懂的 | 国产精品亚洲片在线播放 | 久福利| 中文字幕在线免费观看视频 | 亚洲人成影院在线 | 精品一二区 | 成人午夜在线电影 | 西西444www大胆无视频 | 2019中文在线观看 | 超碰免费公开 | 国内精品视频在线播放 | 欧美综合国产 | 国产色婷婷精品综合在线手机播放 | 国产精品久久久久久久久蜜臀 | 日韩在线首页 | 日韩电影精品一区 | 久久一区二区三区超碰国产精品 | 91完整视频 | 91尤物国产尤物福利在线播放 | 欧美在线观看小视频 | 欧美一二三视频 | 日韩性色| 中文字幕高清有码 | 成年人电影免费看 | www最近高清中文国语在线观看 | 国产亚洲综合精品 | 日韩一二区在线 | 免费成人av | 亚洲一区二区观看 | 亚洲精品国产品国语在线 | 一本一本久久a久久精品综合妖精 | 日日干夜夜爱 | 国产精品久久久久久久久搜平片 | www操操| 中文字幕美女免费在线 | 久久久国产一区二区三区 | 色综合天天综合网国产成人网 | 欧美 国产 视频 | 免费看国产一级片 | 综合av在线 | 中文字幕999 | 久久久99精品免费观看乱色 | 久久99国产精品久久99 | 九九久久久久久久久激情 | 国产成人久久精品77777 | 2018好看的中文在线观看 | 九九热精品视频在线播放 | 国产精品嫩草影视久久久 | av免费电影网站 | 色婷婷激情四射 | 黄色91免费观看 | 99久久er热在这里只有精品66 | 国产精品美女久久久久久 | 九九精品在线观看 | 人人看人人| 亚州精品国产 | 国产一区二区三区久久久 | 国产午夜精品视频 | 中文字幕欧美激情 | 国内成人精品视频 | 最近最新mv字幕免费观看 | 久热超碰 | 国产一级在线观看视频 | 亚洲免费成人 | 一区二区精品在线观看 | 丁香久久婷婷 | 在线观看日韩中文字幕 | 黄色片网站av | 欧美日韩中文字幕综合视频 | 成年人免费在线播放 | 成人在线免费观看视视频 | 999国产精品视频 | 国产精品高潮久久av | 香蕉91视频 | 国产精品中文在线 | 亚洲精品国偷自产在线91正片 | 96av在线| 亚洲精品9 | 亚洲黄色三级 | 麻花豆传媒mv在线观看 | 最近中文字幕国语免费高清6 | 一区三区视频在线观看 | 欧美狠狠操 | 国产高清一级 | 国产欧美日韩精品一区二区免费 | 免费视频成人 | 国产黄色片一级 | 国产在线观看91 | 色欲综合视频天天天 | 免费视频三区 | 91人人澡| 人人擦| 欧美激情视频久久 | 久久久久久久看片 | 日韩电影一区二区三区 | 久久ww| 狠狠色伊人亚洲综合网站色 | 91精品国产三级a在线观看 | 蜜臀av性久久久久蜜臀aⅴ涩爱 | 日韩国产精品一区 | 久久免费视频网站 | 一本之道乱码区 | 久久久久中文字幕 | 99热国产精品 | 色a综合 | 深爱开心激情网 | 成人网中文字幕 | 日日夜夜91 | 91精品亚洲影视在线观看 | 99热这里精品 | 欧美性受极品xxxx喷水 | 9999在线| 精品国产一区二区在线 | 成人永久免费 | 奇米影视四色8888 | 免费av 在线 | 久久久久久久久久久久99 | 激情视频一区 | 丁香五月网久久综合 | 日韩午夜高清 | 国产精品一区二区三区免费看 | 久久久国产精品亚洲一区 | 亚洲乱码久久久 | 国产老太婆免费交性大片 | 欧美天堂视频在线 | 激情网色 | 97精品在线视频 | 一级黄色电影网站 | 黄a网站| 黄色网址中文字幕 | 色婷婷综合视频在线观看 | 亚洲无线视频 | 香蕉视频在线免费 | 免费日韩一级片 | 欧美日韩性视频在线 | 国产精品三级视频 | 国产成人av电影 | 久久精品毛片基地 | 中文在线字幕免费观看 | 国产精品久久久久久久免费大片 | 一区二区三区日韩在线 | 天堂在线视频中文网 | 久久精品国亚洲 | 精品欧美在线视频 | 深爱开心激情网 | 97综合视频| 天天色视频 | 国产黄色在线看 | 国产精品成人一区二区三区吃奶 | 欧美激情在线网站 | 激情欧美一区二区三区免费看 | 日韩免费看视频 | 久草观看视频 | 99久久www免费| 久久精品aaa | 国产午夜精品一区 | 亚洲国内精品 | 中文字幕日韩伦理 | 久草在线电影网 | 国产精品久久一区二区无卡 | 久草在线视频免费资源观看 | 国产xx视频 | 波多野结衣精品在线 | 91人人视频在线观看 | 黄色电影网站在线观看 | 久久精品国产亚洲 | 日韩在线观看中文 | 97视频在线观看免费 | 国产精品去看片 | 免费观看成人 | 国产中文字幕在线视频 | 精品国产成人在线 | 国产不卡一区二区视频 | 中文字幕 国产视频 | avwww在线观看 | 色欧美成人精品a∨在线观看 | 久久国产精品精品国产色婷婷 | www.国产在线观看 | av再线观看 | 日韩欧美一区二区不卡 | 91精品入口 | 伊人va| 在线导航av | 伊人国产在线播放 | av综合av| 亚洲免费在线观看视频 | 免费在线观看av电影 | 久久久久免费视频 | 好看av在线 | 日韩黄色在线电影 | 日本久草电影 | 草久久影院 | 久久久久免费精品国产 | 久久久99久久 | 国产涩图 | 日韩中文字幕在线看 | www.av免费观看 | 国产成人精品在线观看 | 不卡的av在线 | 日韩免费电影在线观看 | 特级xxxxx欧美 | 久久久久国产a免费观看rela | av专区在线 | 天堂av网在线 | 黄色一级大片在线免费看国产一 | 免费观看黄色12片一级视频 | 日日插日日干 | 麻豆免费看片 | 精品日本视频 | 亚洲天堂网在线播放 | 免费观看的黄色片 | 色偷偷88888欧美精品久久 | 国外调教视频网站 | 伊香蕉大综综综合久久啪 | 最新国产精品久久精品 | 日韩精品一区二区三区视频播放 | 久草男人天堂 | 久久久久国产精品午夜一区 | 免费国产在线精品 |