1 #变量 2 /* 3 系统变量: 4 全局变量 5 会话变量 6 7 自定义变量: 8 用户变量 9 局部变量 10 11 */ 12 #一、系统变量 13 /* 14 说明:变量由系统定义,不是用户定义,属于服务器层面 15 注意:全局变量需要添加global关键字,会话变量需要添加session关键字,如果不写,默认会话级别 16 使用步骤: 17 1、查看所有系统变量 18 show global|【session】variables; 19 2、查看满足条件的部分系统变量 20 show global|【session】 variables like '%char%'; 21 3、查看指定的系统变量的值 22 select @@global|【session】系统变量名; 23 4、为某个系统变量赋值 24 方式一: 25 set global|【session】系统变量名=值; 26 方式二: 27 set @@global|【session】系统变量名=值; 28 29 */ 30 #1》全局变量 31 /* 32 作用域:针对于所有会话(连接)有效,但不能跨重启 33 */ 34 #①查看所有全局变量 35 SHOW GLOBAL VARIABLES; 36 #②查看满足条件的部分系统变量 37 SHOW GLOBAL VARIABLES LIKE '%char%'; 38 #③查看指定的系统变量的值 39 SELECT @@global.autocommit; 40 #④为某个系统变量赋值 41 SET @@global.autocommit=0; 42 SET GLOBAL autocommit=0; 43 44 #2》会话变量 45 /* 46 作用域:针对于当前会话(连接)有效 47 */ 48 #①查看所有会话变量 49 SHOW SESSION VARIABLES; 50 #②查看满足条件的部分会话变量 51 SHOW SESSION VARIABLES LIKE '%char%'; 52 #③查看指定的会话变量的值 53 SELECT @@autocommit; 54 SELECT @@session.tx_isolation; 55 #④为某个会话变量赋值 56 SET @@session.tx_isolation='read-uncommitted'; 57 SET SESSION tx_isolation='read-committed'; 58 59 #二、自定义变量 60 /* 61 说明:变量由用户自定义,而不是系统提供的 62 使用步骤: 63 1、声明 64 2、赋值 65 3、使用(查看、比较、运算等) 66 */ 67 68 #1》用户变量 69 /* 70 作用域:针对于当前会话(连接)有效,作用域同于会话变量 71 */ 72 73 #赋值操作符:=或:= 74 #①声明并初始化 75 SET @变量名=值; 76 SET @变量名:=值; 77 SELECT @变量名:=值; 78 79 #②赋值(更新变量的值) 80 #方式一: 81 SET @变量名=值; 82 SET @变量名:=值; 83 SELECT @变量名:=值; 84 #方式二: 85 SELECT 字段 INTO @变量名 86 FROM 表; 87 #③使用(查看变量的值) 88 SELECT @变量名; 89 90 91 #2》局部变量 92 /* 93 作用域:仅仅在定义它的begin end块中有效 94 应用在 begin end中的第一句话 95 */ 96 97 #①声明 98 DECLARE 变量名 类型; 99 DECLARE 变量名 类型 【DEFAULT 值】; 100 101 102 #②赋值(更新变量的值) 103 104 #方式一: 105 SET 局部变量名=值; 106 SET 局部变量名:=值; 107 SELECT 局部变量名:=值; 108 #方式二: 109 SELECT 字段 INTO 具备变量名 110 FROM 表; 111 #③使用(查看变量的值) 112 SELECT 局部变量名; 113 114 115 #案例:声明两个变量,求和并打印 116 117 #用户变量 118 SET @m=1; 119 SET @n=1; 120 SET @sum=@m+@n; 121 SELECT @sum; 122 123 #局部变量 124 DECLARE m INT DEFAULT 1; 125 DECLARE n INT DEFAULT 1; 126 DECLARE SUM INT; 127 SET SUM=m+n; 128 SELECT SUM; 129 130 131 #用户变量和局部变量的对比 132 133 作用域 定义位置 语法 134 用户变量 当前会话 会话的任何地方 加@符号,不用指定类型 135 局部变量 定义它的BEGIN END中 BEGIN END的第一句话 一般不用加@,需要指定类型 136