MySQL系列(八):SQL编程

一、变量

1.系统变量

系统定义好的变量,大部分的时候用户不需要使用系统变量,系统变量是用来控制服务器的表现的。如autocommit, auto_increment_increment等。

查看系统变量:

-- 查看所有系统变量
show variables;

-- 查看具体变量值,任何一个有数据返回的内容都是由select查看
-- select @@变量名;
select @@version,@@autocommit,@@auto_increment_offset,@@character_set_results;

修改系统变量:

会话级别:临时修改,当前客户端当次连接有效

set 变量名 = 值;

Set @@变量名 = 值;

-- 修改会话级别变量
set autocommit = 0;
set @@autocommit = 0;

全局级别:一次修改,永久生效(对所有客户端都生效)

set global 变量名 = 值;

-- 修改全局级别变量
set global autocommit = 0;

如果对方(其他)客户端当前已经连上服务器,那么当次修改无效,要退出重新登录才会生效。

2.自定义变量

1)会话变量

定义变量:

set @变量名 = 值

-- 定义自定义变量
set @name = '张三';
  • 第一次给其赋值,就算定义了
  • 可以在编程环境和非编程环境中使用
  • 使用的任何场合也都带该"@"符号

查看变量:

select @变量名;

-- 查看变量
select @name;
  • 所有会话变量都是会话级别,当前客户端当次连接有效
  • 所有会话变量不区分数据库(用户级别)

2)普通变量

declare 变量名 类型 【default 默认值】

  • 必须先声明,声明时也可以赋值
  • 只能在编程环境中使用(存储过程、函数、触发器)
3.变量赋值

a)语法1:此语法中的变量必须先使用declare声明

set 变量名 = 表达式;

b)语法2:此方式可以无需declare语法声明,而是直接赋值

set @变量名 = 表达式;

set @age := 18;

c)语法3:此语句会给该变量赋值,同时还会作为一个select语句输出'结果集'

select @变量名 := 表达式;

---- 如果使用 = 会变成比较

-- select @变量名 := 字段名 from 数据源;
select @name := name,name from student;

d)语法4:此语句虽然看起来是select语句,但其实并不输出'结果集',而是给变量赋值

select 表达式 into @变量名;

---- 要求很严格,数据记录最多只允许获取一条

-- select 字段列表 from 表名 into 变量列表
select name,age from student where id = 2 into @name,@age;

二、运算符

1.算术运算符

+、-、*、/、%

mysql没有++和—运算符

2.关系运算符

>、>=、<、<=、=(等于)、<>(不等于)!=(不等于)

3.逻辑运算符

and(与)、or(或)、not(非)

三、语句块

四、顺序结构

五、分支结构

1.if判断

单分支:

if 条件 then
  --代码
end if;

双分支:

if 条件 then
  -- 代码
else
  -- 代码
end if;

多分支:

if 条件 then
  -- 代码
elseif 条件 then
  -- 代码
else
  -- 代码
end if;
2.case判断
case 变量
  when 值 then 语句;
  when 值 then 语句;
  else 语句;
end case;

六、循环结构

Iterate:迭代,类似continue

leave:离开,类似break

使用方式:iterate/leave 循环名字

1.loop循环

标签名:loop

    leave 标签名    --退出循环

end loop;

2.while循环

[标签:]while 条件 do

     -- 代码

end while;

3.repeat循环

repeat

    -- 代码

until 条件 end repeat;

转载于:https://my.oschina.net/programs/blog/1789527

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值