45、mysql 储存过程

视图

视图是一个虚拟的暂时的表,它的创建由查询定义,视图包含一系列带有行和列的数据。

视图的特点:

  1. 视图的列可以来自不同的表,是表的抽象和逻辑意义上建立的新关系。 
  2. 视图是由基本表(实表)产生的表(虚表)。 
  3. 视图的建立和删除不影响基本表。 
  4. 对视图内容的更新(添加、删除和修改)直接影响基本表。 
  5. 当视图来自多个基本表时,不允许添加,修改和删除数据

视图的操作过程:

1、创建视图:

create view 视图名称  as sql 查询语句 

2、使用视图:

select from 视图名称   (将视图展示出来)

3、修改视图:

alter view 视图名称 as  SQL语句(比如:select * from goods where id  >3 ),好像和创建差不多了……

4、删除视图:

drop view 视图名称


储存过程

 存储过程:类似于函数(方法),简单的说存储过程是为了完成某个数据库中的特定功能而编写的语句集合,该语句集包括SQL语句(对数据的增删改查)、条件语句和循环语句等。

 1. 查看现有的存储过程

1
show procedure status;

 2 .删除存储过程

1
drop procedure 存储过程名称;

   3. 调用 存储过程

1
call 存储过程名称(参数入/出类型 参数名 数据类型);

 4.创建存储过程

1、封装

  创建储存过程:为表增加值  

create PROCEDURE p1()
BEGIN
insert into goods values(null,'鸭子',50);
select * from goods ;
end  

调用储存过程:

call p1();

2、带参数的储存过程

创建储存过程

create PROCEDURE p2(in i int ,inout names varchar(50) )
BEGIN
update goods set name = names where id = i ;
select * from goods ;

end

调用带参数的储存过程

set @names = '韩涉';     #提前需要设置变量名,要带有@
call p2(1,@names);      #调用储存过程

select @names    #这个变量名也可以显示出来

  mysql中有三种出入参数类型:分别为:1. in 入参类型  2.out 出参类型   3. inout 出入参类型

3、带判断的储存过程

create procedure p4 (in f char(5),in nums INT)
BEGIN
if f ='true' then select * from goods where num >= nums ;
elseif f ='false' then select * from goods where num < nums;
else select * from goods ;
end if ;
end

call p4('false',20);  #调用储存函数

4、带循环的储存过程 --  计算100 以内的总和

 begin
declare i int default 0;
declare sum int ;
while i <= n do
set i = i + 1 ;
set sum = sum + i ;
end WHILE;

end

-- 调用函数

set @n = 100 ;

call p5(@n);

查看存储过程
show PROCEDURE status;
删除存储过程
drop PROCEDURE p1;

函数

计算x+y

create function f ( x int , y int)
returns int
begin
declare sum int default 0;
set sum = x + y;
return (sum);
end

-- 调用函数:

select f(101,2)
select g.*,f(101,2) from goods g


事物

1、什么是事物?

 一组sql语句批量执行,要么全部执行成功,要么全部执行失败

2、事物的特征

  • 原子性:要么不谈,要谈就要结婚!

    对于其数据修改,要么全都执行,要么全都不执行。

  • 一致性:恋爱时,什么方式爱我;结婚后还得什么方式爱我;

    数据库原来有什么样的约束,事务执行之后还需要存在这样的约束,所有规则都必须应用于事务的修改,以保持所有数据的完整性。

  • 隔离性:闹完洞房后,是俩人的私事。

    一个事务不能知道另外一个事务的执行情况(中间状态)

  • 持久性:一旦领了结婚证,无法后悔。

    即使出现致命的系统故障也将一直保持。不要告诉我系统说commit成功了,回头电话告诉我,服务器机房断电了,我的事务涉及到的数据修改可能没有进入数据库。

原文地址:https://www.cnblogs.com/wangyuxing/p/8490024.html