本文内容:

  • 系统变量
  • 用户变量
    • 局部变量

首发日期:2018-04-18


系统变量:

  • 系统变量就是系统已经提前定义好了的变量
  • 系统变量一般都有其特殊意义。比如某些变量代表字符集、某些变量代表某些mysql文件位置
  • 系统变量中包括会话级变量(当次会话连接生效的变量,如names),以及全局变量(一直生效的变量) 【系统变量中全局变量和会话变量其实是使用一套变量,不同的是会话变量仅当次会话生效。】
    • 会话变量的赋值:set 变量名 = 值;  【比如常用的set names ="utf8";】或者set @@变量名=值
    • 全局变量的赋值:set global 变量名 = 值;

查看系统变量:

  • show variables;

系统变量的调用:

  • select @@变量名;

用户变量:

  • 用户变量就是用户自己定义的变量。
  • 系统为了区别系统变量跟自定义变量,规定用户自定义变量必须使用一个@符号
  • 变量的定义方式:
    • set @变量名=1
    • select @变量名:=值;
    • select 值 into @变量名;
  • 用户变量可以不声明定义,就可以直接使用,不过默认是null值
  • 用户变量都是会话级的变量,仅在当次连接中生效。

局部变量:

  • 由于局部变量是用户自定义的,可以认为局部变量也是用户变量【但有所不同,局部中不需要使用@】
  • 局部变量一般用在sql语句块中,比如存储过程块、触发器块等
  • 局部变量的定义方法:
    • 先使用declare声明局部变量,其中可选项default后面可以跟一个付给变量的默认值:【非常重要的一步,不然会设置成用户变量】【注意:变量声明语句要在其他语句如select语句之前】
      • 示例:declare myq int;
      • 示例:declare myq int default 666;
    • 设置变量的值:
      • set 变量名= 值;
    • 获取变量的值:
      • select 变量名;
create procedure myset()
begin
declare mya int;
declare myq int default 777;
select mya,myq;
set myq=6;
set mya=666;
select mya,myq;
end; call myset();

补充:

  • 有些人可能会发现直接set 变量名=值;也可以定义“用户变量”;但这是一种不好的行为【这种行为忽略了各自变量的功能】,因为你不知道会不会跟系统变量冲突,所以最好用户变量加上@
  • 因为 = ,有很多地方都用来判断是否等于,为了避免歧义,也可以使用:=来赋值
  • 上面虽然给了一些其他的赋值方法,但好像有一些是不通用的,比如:=只用于用户变量,所以要审慎使用】。

最新文章

  1. Linux 服务器 安装 memcached
  2. XML组成结构以及C#通过DTD验证规范性
  3. android 进程间通信数据(二)------parcel的实现
  4. JavaScript string.format
  5. [HeadFirst-HTMLCSS学习笔记][第十二章HTML5标记]
  6. C++ Primer 读书笔记:第11章 泛型算法
  7. cmd 快捷操作
  8. js在(FF)中长字段溢出(自动换行)
  9. C#设计模式(5)-建造者模式
  10. 洛谷3月月赛 R1 Step! ZERO to ONE
  11. SAP HUM 锁住一个HU?
  12. RB-Tree插入过程详解
  13. c# Console application Open/Get Url by Browser
  14. [py][mx]django的cookie和session操作-7天免登录
  15. hbase-java-api001
  16. 10.18号java课后动手动脑
  17. 知乎网的CSS命名规律研究
  18. LVM逻辑卷管理测试——逻辑卷扩展、收缩、快照及删除
  19. Android 色彩设计理念
  20. 在Mac下配置php开发环境:Apache+php+MySql (卡在 给mysql 设置不了账号密码)

热门文章

  1. 如何用vue-router为每个路由配置各自的title
  2. 自动化测试 | UI Automator 进阶指南
  3. 函数式编程之-Partial application
  4. spring-boot-2.0.3之quartz集成,不是你想的那样哦!
  5. 使用meterpreter让没有安装python解释器的肉鸡设备执行任意python程序
  6. 启动sql2012时出现Cannot find one or more components.Please reinstall the application
  7. mysql 数据库的备份与还原 at winows
  8. 部署WebService
  9. 从零开始学安全(七)●Linux基础命令学习笔记
  10. 使用 hashMap和treeMap开启多个摄像头的监控任务