MySQL 4.1.0 中文参考手册 -- 6.1 语言结构[4]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 shuixin13 的 blog

mysql> select @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
+----------------------+------+------+------+
| @t1:=(@t2:=1)+@t3:=4 | @t1  | @t2  | @t3  |
+----------------------+------+------+------+
|                    5 |    5 |    1 |    4 |
+----------------------+------+------+------+

用户变量可以用于表达式所允许的任何地方。注意,这在数字必须明确指定的语境中并不适用,例如,在 selectlimit 子句中或一个 load data 语句的 ignore number lines 的子句中。

注意:在一个 select 语句中,各个表达式只有在它被送到客户端时才能被求值。这就意味着,在 havinggroup byorder by 子句中,你不能使用一个包含在 select 部份所设置变量的表达式。例如:下面的语句将不会按预期的运作:

mysql> select (@aa:=id) as a, (@aa+3) as b from table_name having b=5;

原因是因为 @aa 不会是当前行的值,而是前一个符合条件的行的 id 值。

规则就是在同一语句中决不赋值 使用同一个变量。

6.1.5 系统变量

从 mysql 4.0.3 开始,我们提供了对大量的系统变量和连接变量的更好的访问方式。你可以不需要关闭服务器就可以更改其中的大部变量值。

系统变量可分为两种类型:线程特定(thread-specific)或称为连接特定(connection-specific)变量,它们是当前连接唯一的;全局变量,它们用于设置全局事件。全局变量也同样被用于设置一个新连接的相应线程特定变量的初始值。

mysqld 启动时,所有的全局变量以命令行参数和选项文件内容初始化。可以通过 set global 命令更改这些值。当一个新的连接线程被建立时,将以全局变量值初始化线程特定变量,直到你执行一个新的 set global 命令时,线程特定变量才会改变。

为了设置一个 全局(global) 变量值,可以使用下面的任一句法:(在这里,我们以 sort_buffer_size 变量作为一个示例)

set global sort_buffer_size=value;
set @@global.sort_buffer_size=value;

为了设置一个 会话(session) 变量的值,可以使用下面任一句法:

set session sort_buffer_size=value;
set @@session.sort_buffer_size=value;
set sort_buffer_size=value;

如果你没有明确指定 globalsession,那么默认地将是设置 session。查看章节 5.5.6 set 句法

localsession 的同义词。

通过下面的任一命令可以检索到一个 全局(global) 变量值:

select @@global.sort_buffer_size;
show global variables like 'sort_buffer_size';

通过下面的任一命令可以检索到一个 会话(session) 变量值:

select @@session.sort_buffer_size;
show session variables like 'sort_buffer_size';

检索 一个变量值时使用 @@variable_name 句法,或没有指定 globalsession 时,如果线程特定(thread-specific)的 (session) 值存在,mysql 将返回它。如果不存在,那么 mysql 将返回全局变量值。

在设置 全局(global) 变量而不是在检索他们的时候需要使用 global ,是为了在之后引用一个同名的线程特定(thread-specific)变量或删除同名的一个线程特定(thread-specific)变量时不至发生问题。在这种情况下,你可能无意间改变整个服务器的状态而不是你自己的连接。

下面的列表是你可以使用 globalsession 对它们进行更改和检索的所有变量。

变量名 变量值类型 变量类型
autocommit bool session
big_tables bool session
binlog_cache_size num global
bulk_insert_buffer_size num global | session
concurrent_insert bool global
connect_timeout num global
convert_character_set string session
delay_key_write off | on | all global
delayed_insert_limit num global
delayed_insert_timeout num global
delayed_queue_size num global
error_count num local
flush bool global
flush_time num global
foreign_key_checks bool session
identity num session
insert_id bool session
interactive_timeout num global | session
join_buffer_size num global | session
key_buffer_size num global
last_insert_id bool session
local_infile bool global
log_warnings bool global
long_query_time num global | session
low_priority_updates bool global | session
max_allowed_packet num global | session
max_binlog_cache_size num global
max_binlog_size num global
max_connect_errors num global
max_connections num global
max_error_count num global | session
max_delayed_threads num global
max_heap_table_size num global | session
max_join_size num global | session
max_sort_length num global | session
max_tmp_tables num global
max_user_connections num global
max_write_lock_count num global
myisam_max_extra_sort_file_size num global | session
myisam_max_sort_file_size num global | session
myisam_sort_buffer_size num global | session
net_buffer_length num global | session
net_read_timeout num global | session
net_retry_count num global | session
net_write_timeout num global | session
query_cache_limit num global
query_cache_size num global
query_cache_type enum global
read_buffer_size num global | session
read_rnd_buffer_size num global | session
rpl_recovery_rank num global
safe_show_database bool global
server_id num global
slave_compressed_protocol bool global
slave_net_timeout num global
slow_launch_time num global
sort_buffer_size num global | session
sql_auto_is_null bool session
sql_big_selects bool session
sql_big_tables bool session
sql_buffer_result bool session
sql_log_binlog bool session
sql_log_off bool session
sql_log_update bool session
sql_low_priority_updates bool global | session
sql_max_join_size num global | session
sql_quote_show_create bool session
sql_safe_updates bool session
sql_select_limit bool session
sql_slave_skip_counter num global
sql_warnings bool session
table_cache num global
table_type enum global | session
thread_cache_size num global
timestamp bool session
tmp_table_size enum global | session
tx_isolation enum global | session
version string global
wait_timeout num global | session
warning_count num local
unique_checks bool session

num 标记的变量可以设置一个数字值。以 bool 标记的变量可以设置 0、1、onoffenum 类型的变量通常是设置为该变量的某一个可用值,但也可以设置为相对应的数字。(enum 的第一个值为 0)。

下面是某些变量的描述:

变量 描述
identity last_insert_id 的别名 (sybase 兼容)
sql_low_priority_updates low_priority_updates 的别名
sql_max_join_size max_join_size 的别名
delay_key_write_for_all_tables 如它与 delay_key_write 一起被设置,那么所有新打开的 myisam 表将使用 delayed key writes.
version version() 的别名 (sybase (?) 兼容)

本文关键:MySQL 中文
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top