变量分为两种:系统变量
和 自定义变量
;
系统变量
系统定义好的变量,大部分时候,根本不需要我们自己去管理这些变量,它们是用来控制服务器表现的,诸如:autocommit
、auto_increment
等等 ;
-
查看系统变量
# 查看所有系统变量,我这里是211个。 ysql> show variables ; +---------------------------------+----------------------------------------------------------------+ | Variable_name | Value | +---------------------------------+----------------------------------------------------------------+ | auto_increment_increment | 1 | | auto_increment_offset | 1 | | automatic_sp_privileges | ON | | back_log | 50 | | basedir | D:mysql | | binlog_cache_size | 32768 | | bulk_insert_buffer_size | 8388608 | | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | u ..... ...... | version_compile_os | Win32 | | wait_timeout | 28800 | +---------------------------------+----------------------------------------------------------------+ 211 rows in set
-
查看具体变量值
# 查看具体变量值 语法: select @@变量名 ; mysql> select @@wait_timeout,@@autocommit ; +----------------+--------------+ | @@wait_timeout | @@autocommit | +----------------+--------------+ | 28800 | 1 | +----------------+--------------+ 1 row in set
-
修改系统变量
分为两种:会话级别、全局级别 ;
会话级别 :
set [@@]变量名 = 值 ;
,仅仅对当次连接有效 ;全局级别:
set global [@@]变量名 = 值 ;
,修改以后,对所有连接都起作用 (除去,在修改之前已经连接上服务器的连接);
自定义变量
用户自定义变量,变量名前面必须添加一个 @
,用于区分系统变量 ;
所有自定义的变量都是 会话级别
;
-
定义自定义变量
set @变量名 = 值 ;
-
查看自定义变量
select @变量名 ;
在
mysql
中,’=’ 会默认的当做比较符号处理(在很多地方),mysql
为了区分和赋值的概念,重新定义了一个新的赋值符号:=
;mysql
允许从数据表中直接获取数据,然后赋值给变量 ;# 边赋值,边查看 -- 必须使用 := 如果使用 = ,则变为了 比较 select @变量名 := 字段名 from 数据源 ;
mysql
允许只有赋值,不查看结果:要求严格:数据记录最多只允许 获取一条 ;
select 字段列表 from 表名 where 条件 into @变量名,@变量名,...;
border="0" src="//music.163.com/outchain/player?type=2&id=474042382&auto=1&height=66" width="330" height="86">