最近整理了下关于mysql数据库中关于变量的定义 ,感觉对这些知识的印象加深了许多,分享出来,希望大家可以来指出我的错误,共同提高技术
变量分为系统变量和自定义变量。
1.系统变量(系统提供的,不需要自定义)分为全局变量和会话变量。
2.自定义变量分为用户变量和局部变量。
注意:和java中的变量一样的,需要声明赋值,再使用。
#系统变量(默认是session) 以系统变量为例,会话变量和系统变量类似 #作用范围:服务器每一次启动都会为全局变量赋默认初始值,如果修改了全局变量的值,只在本次服务的声明周期内有效,重启服务将恢复默认值 #查看系统变量 SHOW GLOBAL/SESSION VARIABLES #通过模糊查询方式 SHOW GLOBAL/SESSION VARIABLES LIKE '%auto%' #查看指定的变量 SELECT @@GLOBAL/SESSION.系统变量名 #为变量赋值 SET GLOBAL/SESSION 系统变量名=值 SET @@GLOBAL/SESSION.系统变量名=值 #查看所有变量 SHOW GLOBAL VARIABLES; #查看指定的变量 SHOW GLOBAL VARIABLES LIKE '%tx%' #查看指定部分的变量 SELECT @@GLOBAL.autocommit SELECT @@tx_isolation #为指定的变量赋值 SET @@GLOBAL.autocommit=TRUE; SET GLOBAL autocommit=false; #自定义变量:遵循变量的声明,赋值,使用 #1.用户变量:针对一次有效的数据库连接有效。 #声明变量 SET @用户变量名=值 SET @用户变量:=值 SELECT @用户变量:=值 #赋值方式1: SET @用户变量名=值 SET @用户变量:=值 SELECT @用户变量:=值 SET @count_people=0; #赋值方式2 SELECT 字段 INTO @变量名 FROM 表(查询的字段值只能有一个) SELECT COUNT(*) INTO @count_people1 FROM employee #查看变量 SELECT @count_people1; #2.局部变量:只在begin ~ end 中有效,而且只能使用在begin ~ end 中的第一行 #局部变量声明: #DECLARE 变量名称 类型; #DECLARE 变量名称 类型 DEFAULT 默认值; #赋值1 SET 局部变量名=值; SET 局部变量名:= 值; #赋值2 SELECT 字段1,字段2 INTO 局部变量名1,局部变量名2 FROM 表(查询的字段只能是一个)