mysql 视图与存储过程

一.视图

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个数据

    原文作者:HaleyLiu
    原文地址: https://www.jianshu.com/p/eed6a382667b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞