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