Mysql:变量(草稿)

#用户变量
#set @<变量名称1>=<表达式1>[,@.....];
#例:
#set @name=1;  
#(重新赋值)
#set @name='admin';   
#set @name=25+5'  
#set @name=@name+5;   
#set @name=(select 客户姓名 from 客户信息 where 客户ID=5);

#查看变量:
#select @name;
#select * from 客户信息 where 客户姓名=@name;


#系统变量(全局系统变量/会话系统变量--只对当前会话有效)
#启动时就被引用并初始化为默认值
#以@@开头
#查看所有系统变量
show Variables;

#查询全局变量 version的值
select @@version;

#局部变量(先定义后使用)  begin...end

#只在begin...end中间才有意义,超过范围则没有意义
#声明一个变量(declare),并赋值
#begin declare name varchar(20) set name=50 end

#定义局部变量name 数据类型为 varchar(16)
begin declare name varchar(16) set name='李四' end;

#定义用户变量 name
set @name='李家旗';
#查询全局变量 version的值
select @@version;
#定义局部变量name 数据类型为 varchar(16)
begin declare name varchar(16) set name='李四' end;

#if...Then...Else 用于条件判断
#if <条件表达式1> Then <语句块1>
#[Elseif <条件表达式2> Then <语句块2>]
#[Else <语句块3>]
#[End if]
#例:
begin
    declare a int,b int,c int;
    set a=12,b=15;
    if a>b then c=a;
    elseif a<b then c=b;
    else c=0;
    select c;
    end if;
    select c;
end;


#Case语句 用于将某个表达式与一组简单表达式进行比较以确定其返回值

#case <条件表达式>
#when <表达式1> then set <SQl语句1>
#when <表达式2> then set <SQl语句2>
#...
#when <表达式n> then set <SQl语句n>
#[Else set <其他SQL语句>]
#End Case;

#例:使用Case语句,根据成绩等级level的值(ABCDE),设置变量grade相应的值(优秀,良好,中等,及格,不及格)
case
when level='A' then set grade='优秀';
when level='B' then set grade='良好';
when level='C' then set grade='中等';
when level='D' then set grade='及格';
when level='E' then set grade='不及格';
else set grade='超出范围';
end case;
#或者:
case level
    when 'A' then set grade='优秀';
    when 'B' then set grade='良好';
    when 'C' then set grade='中等';
    when 'D' then set grade='及格';
    when 'E' then set grade='不及格';
else set grade='超出范围';
end case;

#while循环语句

#[开始标注:]
#while <逻辑表达式> Do
#    <语句块>
#End While [结束标注];
#例题:使用循环语句实现1+2+...+10
set i=0;
set s=0;
while i <10 do
    set i=i+1;
    set s=s+i;
end while;

#Loop循环语句,必须遇到Leave语句才能停止
set i=0;
set s=0;
L1:Loop
set i=i+1;
set s=s+i;
if i>=10 then
leave L1;
end if;
end Loop L1;
#Iterate语句用于跳出本次循环,直接进入下次循环

#多行注释
/*
...
...
...
*/

#练习:[存储过程]
#为用户变量name赋值"人民邮电出版社"
set @name="人民邮电出版社";
#从数据表“出版社信息”中查询“人民邮电出版社”的“出版社ID”字段的值,并且将该值存储在用户变量id中
set @id=(select 出版社ID from 出版社信息 where 出版社名称="人民邮电出版社");
#从数据表“图书信息”中查询“人民邮电出版社”出版的图书种类数量,并且将图书种类数量存储在用户变量num中
set @num=(select count(图书名称) as 图书种类数量 from 图书信息 where 出版社=@id);
#显示用户变量name、id和num的值
select @name,@id,@num;

#Delimiter 命令 用于更改MySQL语句的结束
#例:将结束符;改为$$
#Delimiter $$

#创建存储过程
#create procedure <存储过程名>([<参数列表>])
#调用存储过程
#call <存储过程名>([<参数列表>])
#修改 alter procedure 通常用于更改存储过程的特定属性

#存储过程练习
delimiter $$
create PROCEDURE p01()
begin
    declare name varchar(18);
    declare id varchar(10);
    declare num varchar(6);
    set name="人民邮电出版社";
    set id=(select 出版社ID from 出版社信息 where 出版社名称="人民邮电出版社");
    set num=(select count(图书名称) as 图书种类数量 from 图书信息 where 出版社=id);
    select name,id,num;
end$$
delimiter ;

#调用存储过程
call p01;
#查询
show procedure status like 'p01';
show create procedure p01;
#修改 alter procedure
#alter procedure p01 SQL security definer;
#删除存储过程片
drop procedure p01;

#创建存储过程p02,求1-10的累加和

delimiter $$
create procedure p02()
begin 
    declare i int,s int;
    set i=0;
    set s=0;
    while i <10 do
        set i=i+1;
        set s=s+i;
    end while;
end$$
delimiter ;

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值