MySQL数据库的存储结构

--把若干条sql语句封装起来,起个名字,叫做过程,也是没有返回值的函数
--把这个过程存储在数据库中->存储过程
--存储过程的创建过程
create procedure proceduceName()
begin
sql 语句
end$

--查看
show procedure status G

--调用
call procedureName()$

--声明变量
declare age int default 18;

--运算
set age:=age+10;

--改变边界
delimiter $

--例子
create procedure p1()
begin
declare age int default 18;

set age:=age+10;
select age;
end$

--用call p1()$调用时出现 age    28
--创建表
create table test(
id int,
name varchar(30) not null default '',
age int,
content varchar(40)
)engine myisam charset utf8$

--插入数据
insert into test values (1,'zhangsan',13,'学习好'),(2,'lisi',15,'智慧的化身'),(2,'wangwu',14,'不起眼')$
--存储过程存储sql语句
create procedure p2()
begin
select content from test where age=15;
end$

--存储过程是可以编程的
--意味着可以使用变量,表达式,控制结构完成复杂的功能

--if/else语句的使用
if 条件 then
语句;
else if 条件 then
语句;
else 
语句;
end if;

create procedure p3()
begin
declare age int default 18;

if age>=18 then
select '你已经成年了';
else
select '未成年';
end if;
end$

--while 循环
while 条件 do
语句;
end while;


--括号里可以声明参数
--参数类型 [in/out/inout] 参数名  参数类型
create procedure p4(agee int)
begin
select name from test where age=agee;
end$

in 表示输入参数 传参
out 表示输出参数 传变量名 向外传值 要设置初始化值
inout 输入参数执行后再输出 传入一个声明过的变量名

create procedure p5(in age int)
begin
select age as '你几岁了'; 
end$

--out 参数,要在procedure 内部初始化参数
create procedure p6(out result int)
begin
declare i int default 1;
set result:=0;
while i<=100 do
set result:=result+i;
set i:=i+1;
end while;
end$
--调用
call p6(@num)$
select @num$


--inout 参数
create procedure p7(inout age int)
begin
set age:=age+10;
select age as '10年后你几岁了';
end$

set @age=10$
call p7(@age)$
select @age$


--case语句
case 变量名
when 值1 then 操作1;
when 值2 then 操作2;
...
else 操作n;
end case;


--repeat 循环
repeat 
操作语句
until 条件 end repeat;
原文地址:https://www.cnblogs.com/lzzhuany/p/4885702.html