MySQL中怎么释放变量,mysql中的变量

如何修改MYSQL的系统变量

MySQL系统变量(system variables)实际上是一些系统参数,用于初始化或设定数据库对系统资源的占用,文件存放位置等等。 mysql show variables like "log"; +---------------+-------+Variable_name Value +---------------+-------+log OFF +---------------+-------+ 1 row in set (0f [mysqld] wait_timeout=10 # service mysqld restart 不过这个方法太生硬了, 线上服务重启无论如何都应该尽可能避免f [mysqld] wait_timeout=103) 设置会话变量方法: 在命令行里通过SET来设置 如果要修改会话变量值, 可以指定"SESSION"或者"@@session."或者"@@"或者"LOCAL"或者"@@local.", 或者什么都不使用. mysql set wait_timeout=10; or mysql set session wait_timeout=10; or mysql set local wait_timeout=10; or mysql set @@wait_timeout=10; or mysql set @@session.wait_timeout=10; or mysql set @@local.wait_timeout=10;然后查看设置是否成功: mysql select @@wait_timeout; or mysql select @@session.wait_timeout; or mysql select @@local.wait_timeout; or mysql show variables like 'wait_timeout'; or mysql show local variables like 'wait_timeout'; or mysql show session variables like 'wait_timeout'; +---------------+-------+Variable_name Value +---------------+-------+wait_timeout 10 +---------------+-------+4) 会话变量和全局变量转换方法: 在命令行里通过SET来设置 将会话变量值设置为对应的全局变量值呢: mysql set @@session.wait_timeout=@@global.wait_timeout; 将会话变量值设置为MySQL编译时的默认值(wait_timeout=28800): mysql set wait_timeout=DEFAULT; 这里要注意的是, 并不是所有的系统变量都能被设置为DEFAULT, 如果设置这些变量为DEFAULT则会返回错误. 参考资料:

目前成都创新互联已为1000+的企业提供了网站建设、域名、虚拟空间、网站运营、企业网站设计、西湖网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

mysql 变量设置问题

mysql变量的术语分类:

1.用户变量:以"@"开始,形式为"@变量名"

用户变量跟mysql客户端是绑定的,设置的变量,只对当前用户使用的客户端生效

2.全局变量:定义时,以如下两种形式出现,set

GLOBAL

变量名

或者

set

@@global.变量名,对所有客户端生效。只有具有super权限才可以设置全局变量

3.会话变量:只对连接的客户端有效。

4.局部变量:作用范围在begin到end语句块之间。在该语句块里设置的变量

declare语句专门用于定义局部变量。set语句是设置不同类型的变量,包括会话变量和全局变量

通俗理解术语之间的区别:

用户定义的变量就叫用户变量。这样理解的话,会话变量和全局变量都可以是用户定义的变量。只是他们是对当前客户端生效还是对所有客户端生效的区别了。所以,用户变量包括了会话变量和全局变量

局部变量与用户变量的区分在于两点:

1.

用户变量是以"@"开头的。局部变量没有这个符号。

2.

定义变量不同。用户变量使用set语句,局部变量使用declare语句定义

3.

作用范围。局部变量只在begin-end语句块之间有效。在begin-end语句块运行完之后,局部变量就消失了。

所以,最后它们之间的层次关系是:变量包括局部变量和用户变量。用户变量包括会话变量和全局变量。

使用备忘,set

@var

若没有指定GLOBAL

或SESSION

,那么默认将会定义用户变量

两种方式定义用户变量:

1."=",如

set

@a

=3,@a:=5

2.":="。select常常这样使用

总结:使用select

和set设置变量的区别,set可以使用以上两种形式设置变量。而select只能使用":="的形式设置变量

实践积累:用户变量在mysql客户端退出后,会自动消失。之后我打开客户端,使用"select

@a;"

显示变了的值为null。说明,未定义的变量初始化是null

实际中的问题

设置常量对group_concat()的配置影响:

SET

@@GROUP_CONCAT_MAX_LEN=4

手册中提到设置的语法是这样的:

SET

[SESSION

|

GLOBAL]

group_concat_max_len

=

val;

以下两种形式都能达到达到同样的效果,但是有什么区别?

SET

@@global.GROUP_CONCAT_MAX_LEN=4;

global可以省略,那么就变成了:SET

@@GROUP_CONCAT_MAX_LEN=4;

2011.2.25

之前的理解不怎么准确。现在对加深理解后的地方进行总结。

mysql中变量的层次关系是:大体包括用户变量和系统变量。系统变量包括系统会话变量和系统全局变量。

相互之间的区别:

因为用户变量就是用户定义的变量,系统变量就是mysql定义和维护的变量。所以,用户变量与系统变量的区别在于,是谁在管理这些变量。mysql一启动的时候就会读取系统变量(这样做目的是可以确定mysql的以何种机制或模式运行)。

系统会话变量与用户变量都是在当前客户端退出后消失。他们之间的区别可以这样理解,虽然常常看到"set

@@varible"的形式去改变系统变量的值,但是并不涉及到定义系统变量。用户变量是可以自己定义(初始化)。系统变量按照只是在改变值。

局部变量只在begin-end语句块中定义并有效。执行到该语句块之后就消失了。定义的方式有明显的特点,使用declare语句。

使用系统变量理论上是可以使用两种形式:

1.

前面带有符号"@@"

2.

符号省略。比如我会看的如下形式:CURRENT_USER。但是,约定系统变量要使用"@@变量名"的形式,就是在前面加上符号"@@"

mysql 存储过程中变量的定义与赋值操作

一、变量的定义

mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end

块中使用,变量必须定义在复合语句的开头,并且是在其它语句之前,也可以同时申明多个变量,如果需要,可以使用default赋默认值。

定义一个变量语法如下:

declare

var_name[,...]

type[default

value]看一个变量定义实例

declare

last

date;二、mysql存储过程变量赋值

变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set来操作,可以是常量或表达式如果下

复制代码

代码如下:

set

var_name=

[,var_name

expr]...给上面的last变量赋值方法如下

set

last

=

date_sub(

current_date(),interval

1

month);下面看通过查询给变量赋值,要求查询返回的结果必须为一行,具体操作如下

select

col

into

var_name[,...]

table_expr我们来通过查询给v_pay赋值。

create

function

get

_cost(p_custid

int,p_eff

datetime)

return

decimal(5,2)

deterministic

reads

sql

data

begin

declare

v_pay

decimail(5,2);

select

ifnull(

sum(pay.amount),0)

into

vpay

from

payment

where

pay.payd=p_eff

and

pay.custid=pid

reutrn

v_rent

+

v_over

-

v_pay;

end

$$

好了,这篇简单的存储过程中变量的定义赋值教程就到这里了,下面我们会接着讲关于myql存储过程的条件的定义与处理。

以下是其它网友的补充

在MySQL的存储过程中,可以使用变量,它用于保存处理过程中的值。

定义变量使用DECLARE语句,语法格式如下:

DECLARE

var_name[,...]

type

[DEFAULT

value]

其中,var_name为变量名称,type为MySQL支持的任何数据类型,可选项[DEFAULT

value]为变量指定默认值。一次可以定义多个同类型的变量,各变量名称之间以逗号“,”隔开。

定义与使用变量时需要注意以下几点:

DECLARE语句必须用在DEGIN…END语句块中,并且必须出现在DEGIN…END语句块的最前面,即出现在其他语句之前。

DECLARE定义的变量的作用范围仅限于DECLARE语句所在的DEGIN…END块内及嵌套在该块内的其他DEGIN…END块。

存储过程中的变量名不区分大小写。

定义后的变量采用SET语句进行赋值,语法格式如下:

SET

var_name

=

expr

[,var_name

=

expr]

...

其中,var_name为变量名,expr为值或者返回值的表达式,可以使任何MySQL支持的返回值的表达式。一次可以为多个变量赋值,多个“变量名=值”对之间以逗号“,”隔开。

例如:

复制代码

代码如下:

begin

declare

no

varchar(20);

declare

title

varchar(30);

set

no='101010',title='存储过程中定义变量与赋值';

end

提示:存储过程中所有的关键字也是不区分大小写的,如BEGIN可以写出begin。

mysql中如何定义变量

测试一下, 好像是可行的呀!

mysql select @test := 1;

+------------+

| @test := 1 |

+------------+

|          1 |

+------------+

1 row in set (0.00 sec)

mysql select * from test_main;

+----+-------+

| id | value |

+----+-------+

|  1 | ONE   |

|  2 | TWO   |

|  3 | THREE |

+----+-------+

3 rows in set (0.00 sec)

mysql select * from test_main where id  @test;

+----+-------+

| id | value |

+----+-------+

|  2 | TWO   |

|  3 | THREE |

+----+-------+

2 rows in set (0.00 sec)

Qt关于操作mysql的语句中使用变量,如何使用。

query.exec(QString("DELETE FROM information WHERE name='%1'").arg(name_del));

1可以在query.exec前,声明QString sqlquery;将带变量的sql语句放入sqlquery中

sqlquery=QObject::tr("insert into table values('%1','%2')").arg(value1,value2);

执行query.exec(sqlquery);就可以了

2可以使用query.prepare()和query.bindvalue();

例如:

query.prepare("UPDATE table SET value1 = ? WHERE id = 1");

query.bindValue(0, 100);

query.exec();


名称栏目:MySQL中怎么释放变量,mysql中的变量
本文路径:http://ybzwz.com/article/phdpei.html