MySQL学习笔记之变量

一、系统变量

  由系统提供,属于服务器层面的变量
  1)查看所有系统变量
  语法:show global|[session] variables; #默认session
  2)查看符合条件的部分系统变量
  show global|[session] variables like '%char%'; #默认session
  3)查询指定的系统变量
  select @@global|session.系统变量名; #默认session
  4)为系统变量赋值
  set global|session 系统变量名 = 值;
  set @@global|session.系统变量名 = 值;
  注:
        a)全局系统变量,global不能省略,会话系统变量,session可以省略。
        b)修改全局系统变量,跨连接有效,修改会话系统变量,只针对当前连接有效。

二、自定义变量

  用户定义的变量。
  1)用户变量
        作用域:只针对当前会话(连接)有效。
        声明并初始化变量
        set @变量名 = 值; 或
        set @变量名 := 值; 或
        select @变量名 := 值; 或
        select 字段 into 变量名 from 表 
        mysql> select count(*) into @total from students;
        Query OK, 1 row affected (0.20 sec)

        mysql> select @total;
        +--------+
        | @total |
        +--------+
        |      6 |
        +--------+
        1 row in set (0.00 sec)

  2)局部变量
        作用域:仅仅在定义它的begin...end中有效
        声明变量:
              declare 变量名 数据类型 [default 值];
        赋值和用户变量赋值相同。
        set @变量名 = 值; 或
        set @变量名 := 值; 或
        select @变量名 := 值; 或
        select 字段 into 变量名 from 表 

三、用户变量和局部变量的区别

变量 作用域 定义和使用的位置 语法
用户变量 当前会话 会话的任意地方 必须加@符号,不用限定数据类型
局部变量 begin...end中 只能在begin...end中,且为第一句 一般不用加@符号,需要限定数据类型
posted @ 2020-12-01 17:50  huige185  阅读(93)  评论(0编辑  收藏  举报