⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 06-1.html

📁 MySQL4.1.0 中文参考手册
💻 HTML
📖 第 1 页 / 共 3 页
字号:
<P>
变量不必被初始化。缺省地,他们的值为 NULL 并可以存储一个整数、实数或字符串值。当连接线程退出时,这个线程的所有变量将会自动地被释放。
</P>
<P>
你可以通过 <CODE>SET</CODE> 句法来设置一个变量:
</P>

<PRE>
SET @variable= { integer expression | real expression | string expression }
[,@variable= ...].
</PRE>

<P>
在语句中除了 <CODE>SET</CODE> 之外还可以直接为一个变量赋值。然而在这各情况下,赋值操作符为 <CODE>:=</CODE> 而不是 <CODE>=</CODE>,因为 <CODE>=</CODE> 在非 <CODE>SET</CODE> 语句中是用于比较的:
</P>

<PRE>
mysql&#62; SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
+----------------------+------+------+------+
| @t1:=(@t2:=1)+@t3:=4 | @t1  | @t2  | @t3  |
+----------------------+------+------+------+
|                    5 |    5 |    1 |    4 |
+----------------------+------+------+------+
</PRE>

<P>
用户变量可以用于表达式所允许的任何地方。注意,这在数字必须明确指定的语境中并不适用,例如,在 <CODE>SELECT</CODE> 的 <CODE>LIMIT</CODE> 子句中或一个 <CODE>LOAD DATA</CODE> 语句的 <CODE>IGNORE number LINES</CODE> 的子句中。</P>
<P>
<STRONG>注意:</STRONG>在一个 <CODE>SELECT</CODE> 语句中,各个表达式只有在它被送到客户端时才能被求值。这就意味着,在 <CODE>HAVING</CODE>、<CODE>GROUP BY</CODE> 或 <CODE>ORDER BY</CODE> 子句中,你不能使用一个包含在 <CODE>SELECT</CODE> 部份所设置变量的表达式。例如:下面的语句将不会按预期的运作:
</P>

<PRE>
mysql&#62; SELECT (@aa:=id) AS a, (@aa+3) AS b FROM table_name HAVING b=5;
</PRE>

<P>
原因是因为 <CODE>@aa</CODE> 不会是当前行的值,而是前一个符合条件的行的 <CODE>id</CODE> 值。
</P>
<P>
规则就是在同一语句中决不赋值 <STRONG>和</STRONG> 使用同一个变量。
</P>


<H3><A NAME="System_Variables"></A>6.1.5  系统变量</H3>

<P>
<A NAME="IDX1002"></A>
<A NAME="IDX1003"></A>

</P>
<P>
从 MySQL 4.0.3 开始,我们提供了对大量的系统变量和连接变量的更好的访问方式。你可以不需要关闭服务器就可以更改其中的大部变量值。
</P>
<P>
系统变量可分为两种类型:线程特定(Thread-specific)或称为连接特定(connection-specific)变量,它们是当前连接唯一的;全局变量,它们用于设置全局事件。全局变量也同样被用于设置一个新连接的相应线程特定变量的初始值。
</P>
<P>
当 <CODE>mysqld</CODE> 启动时,所有的全局变量以命令行参数和选项文件内容初始化。可以通过 <CODE>SET GLOBAL</CODE> 命令更改这些值。当一个新的连接线程被建立时,将以全局变量值初始化线程特定变量,直到你执行一个新的 <CODE>SET GLOBAL</CODE> 命令时,线程特定变量才会改变。
</P>
<P>
为了设置一个 <CODE>全局(GLOBAL)</CODE> 变量值,可以使用下面的任一句法:(在这里,我们以 <CODE>sort_buffer_size</CODE> 变量作为一个示例)
</P>

<PRE>
SET GLOBAL sort_buffer_size=value;
SET @@global.sort_buffer_size=value;
</PRE>

<P>
为了设置一个 <CODE>会话(SESSION)</CODE> 变量的值,可以使用下面任一句法:</P>

<PRE>
SET SESSION sort_buffer_size=value;
SET @@session.sort_buffer_size=value;
SET sort_buffer_size=value;
</PRE>

<P>
如果你没有明确指定 <CODE>GLOBAL</CODE> 或 <CODE>SESSION</CODE>,那么默认地将是设置 <CODE>SESSION</CODE>。查看章节 <A HREF="manual1.html#SET_OPTION">5.5.6  <CODE>SET</CODE> 句法</A>。
</P>
<P>
<CODE>LOCAL</CODE> 是 <CODE>SESSION</CODE> 的同义词。
</P>
<P>
通过下面的任一命令可以检索到一个 <CODE>全局(GLOBAL)</CODE> 变量值:
</P>

<PRE>
SELECT @@global.sort_buffer_size;
SHOW GLOBAL VARIABLES like 'sort_buffer_size';
</PRE>

<P>
通过下面的任一命令可以检索到一个 <CODE>会话(SESSION)</CODE> 变量值:
</P>

<PRE>
SELECT @@session.sort_buffer_size;
SHOW SESSION VARIABLES like 'sort_buffer_size';
</PRE>

<P>
当 <STRONG>检索</STRONG> 一个变量值时使用 <CODE>@@variable_name</CODE> 句法,或没有指定 <CODE>GLOBAL</CODE> 或 <CODE>SESSION</CODE> 时,如果线程特定(thread-specific)的 (<CODE>SESSION</CODE>) 值存在,MySQL 将返回它。如果不存在,那么 MySQL 将返回全局变量值。
</P>
<P>
在设置 <CODE>全局(GLOBAL)</CODE> 变量而不是在检索他们的时候需要使用 <CODE>GLOBAL</CODE> ,是为了在之后引用一个同名的线程特定(thread-specific)变量或删除同名的一个线程特定(thread-specific)变量时不至发生问题。在这种情况下,你可能无意间改变整个服务器的状态而不是你自己的连接。
</P>
<P>
下面的列表是你可以使用 <CODE>GLOBAL</CODE> 或 <CODE>SESSION</CODE> 对它们进行更改和检索的所有变量。
</P>
<TABLE BORDER WIDTH="100%">
<TR><TD><STRONG>变量名 </STRONG> </TD><TD> <STRONG>变量值类型</STRONG> </TD><TD> <STRONG>变量类型</STRONG>
</TD></TR>
<TR><TD>autocommit </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>big_tables </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>binlog_cache_size </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>bulk_insert_buffer_size </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>concurrent_insert </TD><TD> bool </TD><TD> GLOBAL
</TD></TR>
<TR><TD>connect_timeout </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>convert_character_set </TD><TD> string </TD><TD> SESSION
</TD></TR>
<TR><TD>delay_key_write </TD><TD> OFF | ON | ALL </TD><TD> GLOBAL
</TD></TR>
<TR><TD>delayed_insert_limit </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>delayed_insert_timeout </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>delayed_queue_size </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>error_count </TD><TD> num </TD><TD> LOCAL
</TD></TR>
<TR><TD>flush </TD><TD> bool </TD><TD> GLOBAL
</TD></TR>
<TR><TD>flush_time </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>foreign_key_checks </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>identity </TD><TD> num </TD><TD> SESSION
</TD></TR>
<TR><TD>insert_id </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>interactive_timeout </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>join_buffer_size </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>key_buffer_size </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>last_insert_id </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>local_infile </TD><TD> bool </TD><TD> GLOBAL
</TD></TR>
<TR><TD>log_warnings </TD><TD> bool </TD><TD> GLOBAL
</TD></TR>
<TR><TD>long_query_time </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>low_priority_updates </TD><TD> bool </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>max_allowed_packet </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>max_binlog_cache_size </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>max_binlog_size </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>max_connect_errors </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>max_connections </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>max_error_count </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>max_delayed_threads </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>max_heap_table_size </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>max_join_size </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>max_sort_length </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>max_tmp_tables </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>max_user_connections </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>max_write_lock_count </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>myisam_max_extra_sort_file_size </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>myisam_max_sort_file_size </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>myisam_sort_buffer_size </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>net_buffer_length </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>net_read_timeout </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>net_retry_count </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>net_write_timeout </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>query_cache_limit </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>query_cache_size </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>query_cache_type </TD><TD> enum </TD><TD> GLOBAL
</TD></TR>
<TR><TD>read_buffer_size </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>read_rnd_buffer_size </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>rpl_recovery_rank </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>safe_show_database </TD><TD> bool </TD><TD> GLOBAL
</TD></TR>
<TR><TD>server_id </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>slave_compressed_protocol </TD><TD> bool </TD><TD> GLOBAL
</TD></TR>
<TR><TD>slave_net_timeout </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>slow_launch_time </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>sort_buffer_size </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>sql_auto_is_null </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>sql_big_selects </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>sql_big_tables </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>sql_buffer_result </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>sql_log_binlog </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>sql_log_off </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>sql_log_update </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>sql_low_priority_updates </TD><TD> bool </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>sql_max_join_size </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>sql_quote_show_create </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>sql_safe_updates </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>sql_select_limit </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>sql_slave_skip_counter </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>sql_warnings </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>table_cache </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>table_type </TD><TD> enum </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>thread_cache_size </TD><TD> num </TD><TD> GLOBAL
</TD></TR>
<TR><TD>timestamp </TD><TD> bool </TD><TD> SESSION
</TD></TR>
<TR><TD>tmp_table_size </TD><TD> enum </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>tx_isolation </TD><TD> enum </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>version </TD><TD> string </TD><TD> GLOBAL
</TD></TR>
<TR><TD>wait_timeout </TD><TD> num </TD><TD> GLOBAL | SESSION
</TD></TR>
<TR><TD>warning_count </TD><TD> num </TD><TD> LOCAL
</TD></TR>
<TR><TD>unique_checks </TD><TD> bool </TD><TD> SESSION
</TD></TR>
</TABLE>

<P>
以 <CODE>num</CODE> 标记的变量可以设置一个数字值。以 <CODE>bool</CODE> 标记的变量可以设置 0、1、<CODE>ON</CODE> 或 <CODE>OFF</CODE>。<CODE>enum</CODE> 类型的变量通常是设置为该变量的某一个可用值,但也可以设置为相对应的数字。(enum 的第一个值为 0)。
</P>
<P>
下面是某些变量的描述:
</P>
<TABLE BORDER WIDTH="100%">
<TR><TD><STRONG>变量 </STRONG> </TD><TD> <STRONG>描述 </STRONG>
</TD></TR>
<TR><TD>identity </TD><TD> last_insert_id 的别名 (Sybase 兼容)
</TD></TR>
<TR><TD>sql_low_priority_updates </TD><TD> low_priority_updates 的别名
</TD></TR>
<TR><TD>sql_max_join_size </TD><TD> max_join_size 的别名
</TD></TR>
<TR><TD>delay_key_write_for_all_tables </TD><TD> 如它与 delay_key_write 一起被设置,那么所有新打开的 MyISAM 表将使用 delayed key writes.
</TD></TR>
<TR><TD>version </TD><TD> VERSION() 的别名 (Sybase (?) 兼容)
</TD></TR>
</TABLE>

<P>
在启动选项章节中可以找到其它的变量的描述,<CODE>SHOW VARIABLES</CODE> 的描述在 <CODE>SET</CODE> 部分。查看章节 <A HREF="manual.html1#Command-line_options">4.1.1  <CODE>mysqld</CODE> 命令行选项</A>。查看章节 <A HREF="manual.html1#SHOW_VARIABLES">4.5.6.4  <CODE>SHOW VARIABLES</CODE></A>。查看章节 <A HREF="manual.html1#SET_OPTION">5.5.6  <CODE>SET</CODE> 句法</A>。
</P>



<H3><A NAME="Comments"></A>6.1.6  注释句法</H3>
<P>
<A NAME="IDX1004"></A>

</P>
<P>
<A NAME="IDX1005"></A>

</P>
<P>
MySQL 服务器支持 <CODE># 到该行结束</CODE>、<CODE>-- 到该行结束</CODE> 以及 <CODE>/* 行中间或多个行 */</CODE> 的注释方格:
</P>

<PRE>
mysql&#62; SELECT 1+1;     # 这个注释直到该行结束
mysql&#62; SELECT 1+1;     -- 这个注释直到该行结束
mysql&#62; SELECT 1 /* 这是一个在行中间的注释 */ + 1;
mysql&#62; SELECT 1+
/*
这是一个
多行注释的形式
*/
1;
</PRE>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -