sql变量
自定义变量:
说明:变量用户自定义,而不是系统提供的
使用步骤:
1.声明
2.赋值
3.使用(查看、比较、运算等)
局部变量: ( BEGIN END 中使用 )
DECLARE 变量名 数据类型 DEFAULT 默认值
用户变量:作用范围是一次连接
赋值操作符:= 、:=
1. 声明并初始化
set @变量名=值
set @变量名:=值
select @变量名:=值
例如:
--声明赋值
set @a=1;
set @b=2;
set @c=@a+@b;
select @c;
查询的内容赋值给变量
select last_name into @name from employees where employee_id = 10;
存储过程
含义:一组预先编译好的SQL语句的集合,理解成批处理命令
- 提高代码的重用性
- 简化操作
- 减少编译次数并且减少了和服务器的连接次数,提高了效率
一、语法
create PROCEDURE 存储过程名(参数列表)
BEGIN
存储过程体(一组合法的SQL语句)
END
参数模式:
in:该参数可以作为输入,也就是该参数需要调用方传入值
out:该参数可以作为输出,也就是该参数可以作为返回值
inout:该参数既可以作为输入,也可以作为输出,也就是该参数既需要传入值,又可以返回值
例题:
--创建存储过程 插入admin表新的数据信息
1.创建存储过程
DELIMITER $ #因为软件兼容性原因 必须声明开始和结束的标志
create PROCEDURE myp1()
BEGIN
insert into admin(username,password)
VALUES('zhangsan','00000'),('lisi','00000');
END
$
2.调用存储过程
call myp1();
select * from admin;
--创建存储过程 根据女神名,查询对应的男神信息
delimiter $
create PROCEDURE myp2(in name VARCHAR(20))
BEGIN
select bo.* from beauty b LEFT JOIN boys bo ON b.boyfriend_id = bo.id where b.`name` = `name`;
END
$
call myp2("周芷若");
--创建存储过程 判断登录是否成功
delimiter $
CREATE PROCEDURE myp3(in uname VARCHAR(20),in pwd varchar(20))
BEGIN
DECLARE cont int DEFAULT 0;
select COUNT(*) into cont from admin where admin.username=uname and admin.password=pwd;
select if(cont>0,'成功','失败');
END
$
call myp3('aaa','6666');
--根据输入的女神名,返回对应的男神名
delimiter $
create PROCEDURE myp4(in vname varchar(20),out nname varchar(20))
BEGIN
SELECT bo.boyName into nname
from beauty b
LEFT join
boys bo on b.boyfriend_id = bo.id
where b.`name`=vname;
END
$
call myp4('Angelababy',@names);
select @names;
--传入a和b两个值,最终a和b都翻倍并返回
delimiter $
create PROCEDURE myp5(inout a int , inout b int)
BEGIN
set a=a*2;
set b=b*2;
END
$
set @a=2;
set @b=3;
call myp5(@a,@b);
select @a,@b;