MySQL视图、存储过程、变量、函数、事务

本文详细介绍了MySQL数据库中的关键概念,包括视图(虚拟表,允许像普通表一样使用,但存在特定限制)、存储过程(一组预编译的SQL语句集合,提升效率和复用性)、变量(系统变量、会话变量、用户变量和局部变量及其作用)、函数(如日期格式化和自定义函数的应用)以及事务(包括ACID特性、事务隔离级别、事务管理)。通过对转账操作等实例的分析,阐述了事务在确保数据一致性和完整性方面的重要性。
摘要由CSDN通过智能技术生成

MySQL视图、存储过程、 变量、 函数、事务

1.视图

含义:虚拟表,但是和普通表的一样使用
MySQL5.1之后出现特性,是通过动态生产的数据

语法:
 		create  view  视图名称
 		as
 		查询语句   
		创建语法			是否实际占用物理空间		使用
表		create	table		保持了数据					增删改查
视图	create  view		只保存了SQL逻辑				主要是查(可以修改数据,不能添加数据,不能删除数据)

删除视图
	 	语法:drop  view   视图名
 		drop  view  v2;

修改视图的内容:
方式1create  or  replace  view  视图名
	as
 	查询语句

方式2alter  view  视图名
	as
	查询语句

查询表结构
	desc  employess;
查询视图结构
	desc  v1;

注意:
试图不允许更新的情况
包含分组函数、group by、having、去重

2.存储过程

存储过程
类似于Java中方法
含义:一组预先变化的SQL语句集合,理解成批处理语句
好处:
1、提高SQL复用性
2、简化操作
3、减少了编译次数并且减少和数据库服务器的连接次数,提高了效率

创建语法:
	create  procedure  存储过程名([参数列表])
	begin
	 	存储过程体(一组SQL语句)
	end 
	 
	用[ ]表示可以不写
	
注意:
	1. 参数列表:参数模型     参数名     参数类型
		
	   参数模型:
		 in:该参数可以作为输入,也就是该参数在调用 存储过程时需要穿入
		 out:该参数可以作为输出,也就是该参数可以作为返回值
		 inout:该参数既可以作为输入或输出,也就是该参数需要传入,又可以返回
	2. 如果存储过程中仅仅只有一句语句,begin和end可以省略不写
	3. 存储过程体中每条SQL语句结尾要求都要加上分号
				delimiter  重新设置(结束标记)

案例:求两个数的和(两个int --> in 一个out类型参数)

create procedure pro1_sum(in a int,in b int,out c int)
begin
	-- c是输出结果   set:给变量赋值
	set c = a + b;
end;
存储过程的使用
	调用存储过程:
		call  存储过程名();
	调用带参数的存储过程:
		call  存储过程名(参数);
 
 注意:
 	如果参数中in类型,参数可以是数值,可以是变量
 	对于out或inout类型,参数必须是变量
 	MySQL中的变量必须以@开头
 	例如:call pro_sum(@变量名,@变量名)

案例:

@result 就是一个变量,用来接收存储过程中返回值
call pro1_sum(10,20,@result);
selecct @result;


call pro1_sum(@a,@b,@c);
select @c;

删除存储过程

drop procedure pro1_sum;

案例:查询员工表的平均工资

inout
create procedure pro2_avg()
begin
	select round(avg(salary),2) as '平均工资' from employees;
end;

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

案例:传递一个员工编号,输出这个员工信息

inout
create  procedure  pro3(in empId int)
begin
	select * from employees where employee_id = empId;
end;

#调用存储过程
call pro3(123);
#删除存储过程
drop procedure pro3;

案例:查询出公司的总计工资

inout
create procedure pro4(out totalMoney double)
begin
	给变量赋值 set 
	selectinto 变量名
	select sum(salary) into totalMoney from employees;
end;

#调用存储过程
call pro4(@temp);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值