lyt经典版MySQL基础——变量

  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; -- 报错,因为没有放在作用域里
每天进步一点点,快乐生活多一点。
原文地址:https://www.cnblogs.com/yiruliu/p/13406184.html