变量分为:

  • 系统变量:服务器层面上的,必须拥有super权限才能为系统变量赋值
    • 全局变量(global)
    • 会话变量(session)
  • 自定义变量
    • 用户变量
    • 局部变量

1、系统变量

说明:系统变量由系统提供,不是由用户定义,属于服务器层面。

语法:

1、查看所有的系统变量

1
2、查看满足条件的部分系统变量

SHOW GLOBAL|[SESSION] VARIABLES LIKE ‘%char%’;```

3、查看指定的某个系统变量的值

1
2
3
4、为某个系统变量赋值

方式1:

SET GLOBAL|[SESSION]系统变量名 = 值;```

方式2:

1
2
3
注意:如果是全局级别,则需要加``` GLOBAL```,如果是会话级别,则需要加```SESSION```;如果不写,则默认为SESSION。

### ①全局变量

mysql /* 作用域:服务器每次启动将为所有的全局变量赋初始值,针对于所有的会话(连接)有效,但不能跨重启 */

①查看所有全局变量

SHOW GLOBAL VARIABLES;

②查看部分全局变量

SHOW GLOBAL VARIABLES LIKE ‘%char%’;

③查看指定的全局变量的值

SELECT @@global.autocommit; SELECT @@global.tx_isolation;

④为某个指定的全局变量赋值

SET @@global.autocommit = 1; # 跨连接有效

1
### ②会话变量

mysql /* 作用域:仅仅针对于当前会话(连接)有效 */

①查看所有会话变量

SHOW VARIABLES; SHOW SESSION VARIABLES;

②查看部分会话变量

SHOW VARIABLES LIKE ‘%char%’; SHOW SESSION VARIABLES LIKE ‘%char%’;

③查看指定的会话变量的值

SELECT @@tx_isolation; SELECT @@session.tx_isolation;

④为某个指定的会话变量赋值

方式1:

SET @@tx_isolation = ‘read-uncommited’; SET @@SESSION.tx_isolation = ‘read-uncommitted’;

方式2:

SET tx_isolation = ‘read-committed’; SET SESSION tx_isolation = ‘read-committed’;

1
2
3
4
5
6
7
## 2、自定义变量

说明:自定义变量是用户自定义的,不是由系统定义的

使用步骤:声明——赋值——使用(查看、比较、运算等)

### ①用户变量

MYSQL /* 作用域:针对于当前会话(连接)有效,和会话变量的作用域相同 应用在任何地方,也就是BEGIN …… END 里面或者外面 */

1
赋值的操作符:  ```=``` 或``` :=```

mysql

①声明并初始化

1
2
3
4
5
6
#方法一:
    # SET @用户变量名 = 值;
#方法二:
    # SET @用户变量名 := 值;
#方式三:
    # SELECT @用户变量名 := 值;

②赋值(更新用户变量的值)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#方式一:通过SET 或 SEECT 
    # SET @用户变量名 = 值;
    # SET @用户变量名 := 值
    # SELECT @用户变量名 := 值;
    # 案例:
        SET @name = 'john';
        SET @name = 100;
# 方式二:通过 SELECT INTO
    /*
        SELECT 字段 INTO @变量名
        FROM 表;
    */
    # 案例:
        SET @count = 1;
        SELECT COUNT(*) INTO @count
        FROM employees;

③使用(查看用户变量的值)

1
2
3
# SELECT @用户变量名;
# 案例:
    SELECT @count;
1
### ②局部变量

mysql /* 作用域:仅仅在定义它的BEGIN …… END中有效 应用在 BEGIN……END中,且只能是第一句话!!!! */

mysql

① 声明

DECLARE 变量名 类型; DECLARE 变量名 类型 DEFAULT 值;

②赋值

1
2
3
4
5
6
7
# 方式1:通过SET 或 SELECT 
    SET 局部变量名 = 值;
    SET 局部变量名 := 值;
    SELECT @局部变量名 := 值;
# 方式2:通 SELECT INTO
    SELECT 字段 INTO 局部变量名
    FROM 表;

③使用

SELECT 局部变量名;

案例:声明2个变量并赋初始值,求和,并打印

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# 1、用户变量
    SET @m := 1;
    SET @n := 2;
    SET @sum := @m + @n;
    SELECT @sum;
# 2、局部变量(报错,需放在BEGIN……END中)
    DECLARE m INT DAFAULT 1;
    DECLARE n INT DEFAULT 2;
    DECLARE sum INT;
    SET sum = m + n;
    SELECT sum;

```

对比用户变量和局部变量:

作用域 定义和使用的位置 语法
用户变量 当前会话 会话中的任何地方 必须加上@符号;不用限定类型
局部变量 BEGIN……END中 只能在BEGIN……END中,且为第一句话 一般不用加@符号;需要限定类型