本篇博客介绍的mysql的视图功能和存储过程以及它们的作用和实例说明 !


 一 . MySQL视图VIEW


1.视图简介

在MySQL中视图功能就比较类似于Exel中的筛选功能

通俗理解就是将一张表中经常要查询的列和记录创建成一张虚拟的表 , 其实viewer视图中存放的是select语句 . 视图中看到的数据会随着原始表格的更新而动态更新 .

定义视图的筛选可以来自当前或其它数据库的一个或多个表,或者其它视图。通过视图进行查询没有任何限制,通过它们进行数据修改时的限制也很少.
视图是存储在数据库中的SQL查询语句,它主要出于原因有: 安全原因,视图可以隐藏一些数据,如:一些敏感的信息使复杂的查询易于理解和使用。

  

2. 创建视图

语法 : CREATE [ALGORITHM = {UNDEFINED | MERGE | TEMPTABLE} ]  
          VIEW 视图名 [(字段1,字段2…)]
          AS  SELECT语句
          [WITH [CASCADED | LOCAL] CHECK OPTION ];

示例 : 创建一个名为view_user 的视图 , 功能为查询mysql库中的user表中的user , host , password 字段信息

CREATE VIEW view_user AS SELECT user,host,password FROM mysql.user;

image.png

      

上述示例为单表视图 , 视图也可以创建多表视图 , 例 :

在test库中创建两张表 ,一张产品表product , 用来存放商品名字和对应的价格 ; 一张采购purshase表 , 用来存放产品信息和数量

product表准备:

image.png

purchase表准备:

image.png

 创建多表视图 :

mysql> create view purchase_detail 
        as select
        product.name as name, product.price as price, 
        purchase.quantity as quantity, 
        product.price * purchase.quantity as  total_value
        from product,purchase
        where product.name = purchase.name;      #等值连接(即name相同的记录进行组合)

image.png


3. 查看视图

  • show  tables                    #视图名可以通过表名查看 , 因为本质它就是一张虚拟的表

  • show  table  status         #查看表的状态

        示例 : 查看书籍库test库中视图及所有表详细信息--->show  table  status  from  test\G

  • show  create  view          #查看视图定义信息

           示例 : show  create  view  视图名\G

  • desc                                  #查看视图结构

           示例 : desc  视图名


4. 修改视图

方法一 : 直接删除视图再新建视图

方法二 : alter修改视图

       语法:

             ALTER VIEW 视图名
             AS  SELECT语句;
       示例:
            ALTER VIEW view_user
            AS  SELECT user,password FROM mysql.user;


5. 删除视图

语法 : DROP VIEW view_name




 二 . MySQL存储过程

     

作用 : 定义数据存储过程 , 存储过程中允许对库 , 表 , 记录做增删改查等操作 , 类似于shell中的函数作用


简介:

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。


语法:

        create  procedure  存储过程名()

        BEGIN

             一定功能的sql语句集

        END


        call  存储过程名();           #调用存储过程

实例 :

要求 :      

创建一个名称为dba的库文件,在dba库中创建一张名称为tb1的表,表中有id、name这两个字段。创建一个名称为ad1的存储过程,ad1存储过程的功能是插入三条记录到tb1表中。

1.步骤 , 创建tb1表

image.png 

2.创建ad1存储过程

image.png

 3.查看tb1表后调用存储过程 , 在次查看tb1表看看有什么不同

image.png


存储过程(procedure)和函数(function)的主要区别:

存储过程是针对表中的数据记录进行处理的SQL语句集合,就类似于shell脚本。
函数通常是针对记录中的某个字段的值进行处理。


     本篇完 !