目录
一.views 视图
由一张或者多张表导出的虚拟表(简化代码)
//创建视图
create view myview as (选择的表);//myview 是自己起的别名
//查询 删除
select * from myview;
drop view myview;
二.functions 函数
1.封装代码
delimiter $ #结束符 特殊字符
create function myfun(a int,b int)
returns int
begin #局部变量
declare c int default 0; #声明一个函数变量并赋值
set c = a +b; #改值
return c;
end $
delimiter ;
select myfun(4,5);
//删除函数
drop function myfun;
2.变量
#局部变量
begin 开始
end 结束
#会话变量 会话结束变量才消失 set @
set @a = myfun(4,5);
#系统变量 set @@
3.条件判断
a.类似if else的判断
declare c varchar(45)default'';
if a>0 then set c='向左走';
elseif a=0 then set c='原地踏步';
else set c='向左走';
end if;//判断语句结束标志
drop function if exists myfun;
b.类似case的判断
declare c varchar(45)default'';
case a
when 0 then set c='向左走';
when 1 then set c='原地踏步';
else set c='向左走';
end case;//判断语句结束标志
三.循环
1.while循环
declare i int default 1;
declare snum int default 0;
while i<=a
do
set snum=snum+i;
set i=i+1;
end while;
四.存储过程
1.Stored Proceduress 存储过程
也是封装功能,相比函数不仅仅可以封装算法还可以封装select复杂语句;
delimiter $
create procedure myproc(in a int,out b int )//存储类型可以是输入in 也可以是输出out
begin
select * from student limit a;
set b=(select * from student limit a);
end $
delimiter ;
//使用
call myproc(3,@aa);
select @aa;
drop procedure myproc;
2.触发器
是一种特殊的存储过程,当指定的事件发生的时候,系统自动调用。
其中含有两种数据:old 原始数据 new 新数据
delimiter %
create trigger mydel
after delete on student //什么操作后执行
for each row //作用范围
begin
delete from sc where snum=old.snum;
end %
delimiter ;
delete from student where snum=1;
drop trigger mydel;
五.事物
一组数据要么都执行要么回滚
select * from bank;
start transaction;
update bank set money = money -100 where name='zs';
update bank set money = money +100 where name='li';
rollback;//回滚
commit;//保存数据