mysql 视图与存储过程

作者: HaleyLiu | 来源:发表于2018-04-11 10:39 被阅读36次

    一.视图

    1.什么是视图

    视图是一个虚拟表,其内容由查询定义,和真实的表有显著区别,只有在特定条件下才可以update和delete。
    当查询数据要关联多张表的时候,要写很长的sql语句,可以使用视图简化。
    视图主要用来查询方便,如果修改也是可以的,一次只能修改一张实表。

    2.视图的使用

    一般用create view 视图名字(查询字段的结果) as select语句 这种格式的sql将查询出来的结果作为临时表。

    然后可以在视图里面进行更改查,更改查询的字段也仅仅限制于视图里面有的字段。

    创建视图
    create  view  query_data(name,sex) as 
    select name,gender from tb_student;
    
    执行以上sql就可以生成视图了,生成后视图会存在数据库里
    
    从视图中查询(只能查询出name,sex)
    select * from  query_data;
    

    二.存储过程

    1.什么是存储过程

    一组为了完成特定功能的SQL 语句集。
    更加直白的理解:存储过程可以说是一个记录集,它是由一些T-SQL语句组成的代码块,这些T-SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后再给这个代码块取一个名字,在用到这个功能的时候调用他就行了

    2.存储过程的使用

    创建存储过程
    drop procedure  if  exists insert_data;
    
    create procedure insert_data(in  num  int)
    
    begin
    
      declare i int;
    
      declare  str  char(62) default 'abcdefghijklmnopqrstuvwxyz123567890A
    BCDEFGHIJKLMNOPQRSTUVWXYZ';
    
    set i = 0;
    
    where i< num do
    
    insert   into  test.student_copy(
    id,
    name,
    gender,
    birthday
    ) values(
       concat('xh',ceil(1+rand()*1000)),
       substring(str,1+floor(rand()*61),6),
       if(round(rand()+1)=1,'男','女'),
      date_add('1997-1-11 13:00:00',interval  
    ceil(1+rand()*100) month)
    );
    set i= i+1;
    
    end while;
    
    end;
    
    执行以上sql就能生成insert_data存储过程,
    生成后会存在数据库里,会占用数据库的空间。
    
    调用存储过程
    
    call  insert_data(1000); 
    
    可生成1000个数据
    
    

    相关文章

      网友评论

        本文标题:mysql 视图与存储过程

        本文链接:https://www.haomeiwen.com/subject/tlunhftx.html