Welcome 微信登录

首页 / 数据库 / MySQL / MySQL中的变量定义

根据MySQL手册,MySQL的变量分为两种:系统变量和用户变量。但是在实际使用中,还会遇到诸如局部变量、会话变量等概念。根据个人感觉,MySQL变量大体可以分为四种类型:一、局部变量。局部变量一般用在sql语句块中,比如存储过程的begin/end。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。局部变量一般用declare来声明,可以使用default来说明默认值。例如在存储过程中定义局部变量:drop procedure if exists add;
create procedure add(    in a int,    in b int
)begin    declare c int default 0;    set c = a + b;    select c as c;end; 
在上述存储过程中定义的变量c就是局部变量 
二、用户变量。用户变量的作用域要比局部变量要广。用户变量可以作用于当前整个连接,但是当当前连接断开后,其所定义的用户变量都会消失。用户变量使用如下(这里我们无须使用declare关键字进行定义,可以直接这样使用):select @变量名对用户变量赋值有两种方式,一种是直接用"="号,另一种是用":="号。其区别在于使用set命令对用户变量进行赋值时,两种方式都可以使用;当使用select语句对用户变量进行赋值时,只能使用":="方式,因为在select语句中,"="号被看作是比较操作符。示例程序如下:drop procedure if exists math;create procedure math
(    in a int,    in b int

begin    set @var1 = 1;    set @var2 = 2;    select @sum:=(a + b) as sum, @dif:=(a - b) as dif;
end; 
mysql> call math(3, 4);
+------+------+
| sum  | dif  |
+------+------+
|    7 | -1 |
+------+------+
1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)mysql> select @var1; //var1为用户变量
+-------+
| @var1 |
+-------+
| 1   |
+-------+
1 row in set (0.00 sec)mysql> select @var2; //var2为用户变量
+-------+
| @var2 |
+-------+
| 2   |
+-------+
1 row in set (0.00 sec) 
3、会话变量服务器为每个连接的客户端维护一系列会话变量。在客户端连接时,使用相应全局变量的当前值对客户端的会话变量进行初始化。设置会话变量不需要特殊权限,但客户端只能更改自己的会话变量,而不能更改其它客户端的会话变量。会话变量的作用域与用户变量一样,仅限于当前连接。当当前连接断开后,其设置的所有会话变量均失效。设置会话变量有如下三种方式:set session var_name = value;set @@session.var_name = value;set var_name = value;查看一个会话变量也有如下三种方式:select @@var_name;select @@session.var_name;show session variables like "%var%"; 
mysql> show session variables;
+---------------------------------+------------------------------------------------------------+
| Variable_name                 | Value                                                      |
+---------------------------------+------------------------------------------------------------+
| auto_increment_increment        | 1                                                          |
| auto_increment_offset         | 1                                                          |
| automatic_sp_privileges       | ON                                                       |
| back_log                        | 50                                                       |
| basedir                       | /usr/                                                      |
| bdb_cache_size                  | 8388600                                                    |
| bdb_home                        | /var/lib/mysql/                                            |
| bdb_log_buffer_size           | 32768                                                      |
| bdb_logdir                      |                                                            |
| bdb_max_lock                    | 10000                                                      |
| bdb_shared_data               | OFF                                                        |
| bdb_tmpdir                      | /tmp/                                                      |
| binlog_cache_size             | 32768                                                      |
| bulk_insert_buffer_size       | 8388608                                                    |
| character_set_client            | latin1                                                   |
| character_set_connection        | latin1                                                   |
| character_set_database          | latin1                                                   |
| character_set_filesystem        | binary                                                   |
| character_set_results         | latin1                                                   |
| character_set_server            | latin1                                                   |
| character_set_system            | utf8                                                     |
| character_sets_dir              | /usr/share/mysql/charsets/                               |
| collation_connection            | latin1_swedish_ci                                          |
| collation_database              | latin1_swedish_ci                                          |
| collation_server                | latin1_swedish_ci                                          |
| completion_type               | 0                                                          |
| concurrent_insert             | 1                                                          |
| connect_timeout               | 5                                                          |
| datadir                       | /var/lib/mysql/                                            |
| date_format                   | %Y-%m-%d                                                 |
| datetime_format               | %Y-%m-%d %H:%i:%s                                          |
| default_week_format           | 0                                                          |
| delay_key_write               | ON                                                       |
| delayed_insert_limit            | 100                                                        |
| delayed_insert_timeout          | 300                                                        |
| delayed_queue_size              | 1000                                                     |
| div_precision_increment       | 4                                                          |
| keep_files_on_create            | OFF                                                        |
| engine_condition_pushdown     | OFF                                                        |
| expire_logs_days                | 0                                                          |
| flush                         | OFF                                                        |
| flush_time                      | 0                                                          |
| ft_boolean_syntax             | + -><()~*:""&|                                           |
| ft_max_word_len               | 84                                                       |
| ft_min_word_len               | 4                                                          |
| ft_query_expansion_limit        | 20                                                       |
| ft_stopword_file                | (built-in)                                               |
| group_concat_max_len            | 1024                                                     |
| have_archive                    | NO                                                       |
| have_bdb                        | YES                                                        |
| have_blackhole_engine         | NO                                                       |
| have_compress                 | YES                                                        |
| have_crypt                      | YES                                                        |
| have_csv                        | NO                                                       |
| have_dynamic_loading            | YES                                                        |
| have_example_engine           | NO                                                       |
| have_federated_engine         | NO                                                       |
| have_geometry                 | YES                                                        |
| have_innodb                   | YES                                                        |
| have_isam                     | NO                                                       |
| have_merge_engine             | YES                                                        |
| have_ndbcluster               | NO                                                       |
| have_openssl                    | DISABLED                                                 |
| have_ssl                        | DISABLED                                                 |
| have_query_cache                | YES                                                        |
| have_raid                     | NO                                                       |
| have_rtree_keys               | YES                                                        |
| have_symlink                    | YES                                                        |
| hostname                        | localhost                                                  |
| init_connect                    |                                                            |
| init_file                     |                                                            |
| init_slave                      |                                                            |
| innodb_additional_mem_pool_size | 1048576                                                    |
| innodb_autoextend_increment   | 8                                                          |
| innodb_buffer_pool_awe_mem_mb | 0                                                          |
| innodb_buffer_pool_size       | 8388608                                                    |
| innodb_checksums                | ON                                                       |
| innodb_commit_concurrency     | 0                                                          |
| innodb_concurrency_tickets      | 500                                                        |
| innodb_data_file_path         | ibdata1:10M:autoextend                                   |
| innodb_data_home_dir            |                                                            |
| innodb_doublewrite              | ON                                                       |
| innodb_fast_shutdown            | 1                                                          |
| innodb_file_io_threads          | 4                                                          |
| innodb_file_per_table         | OFF                                                        |
| innodb_flush_log_at_trx_commit  | 1                                                          |
| innodb_flush_method           |                                                            |
| innodb_force_recovery         | 0                                                          |
| innodb_lock_wait_timeout        | 50                                                       |
| innodb_locks_unsafe_for_binlog  | OFF                                                        |
| innodb_log_arch_dir           |                                                            |
| innodb_log_archive              | OFF                                                        |
| innodb_log_buffer_size          | 1048576                                                    |
| innodb_log_file_size            | 5242880                                                    |
| innodb_log_files_in_group     | 2                                                          |
| innodb_log_group_home_dir     | ./                                                       |
| innodb_max_dirty_pages_pct      | 90                                                       |
| innodb_max_purge_lag            | 0                                                          |
| innodb_mirrored_log_groups      | 1                                                          |
| innodb_open_files             | 300                                                        |
| innodb_rollback_on_timeout      | OFF                                                        |
| innodb_support_xa             | ON                                                       |
| innodb_sync_spin_loops          | 20                                                       |
| innodb_table_locks              | ON                                                       |
| innodb_thread_concurrency     | 8                                                          |
| innodb_thread_sleep_delay     | 10000                                                      |
| interactive_timeout           | 28800                                                      |
| join_buffer_size                | 131072                                                   |
| key_buffer_size               | 8388600                                                    |
| key_cache_age_threshold       | 300                                                        |
| key_cache_block_size            | 1024                                                     |
| key_cache_division_limit        | 100                                                        |
| language                        | /usr/share/mysql/english/                                  |
| large_files_support           | ON                                                       |
| large_page_size               | 0                                                          |
| large_pages                   | OFF                                                        |
| lc_time_names                 | en_US                                                      |
| license                       | GPL                                                        |
| local_infile                    | ON                                                       |
| locked_in_memory                | OFF                                                        |
| log                           | OFF                                                        |
| log_bin                       | OFF                                                        |
| log_bin_trust_function_creators | OFF                                                        |
| log_error                     |                                                            |
| log_queries_not_using_indexes | OFF                                                        |
| log_slave_updates             | OFF                                                        |
| log_slow_queries                | OFF                                                        |
| log_warnings                    | 1                                                          |
| long_query_time               | 10                                                       |
| low_priority_updates            | OFF                                                        |
| lower_case_file_system          | OFF                                                        |
| lower_case_table_names          | 0                                                          |
| max_allowed_packet              | 1048576                                                    |
| max_binlog_cache_size         | 4294967295                                               |
| max_binlog_size               | 1073741824                                               |
| max_connect_errors              | 10                                                       |
| max_connections               | 100                                                        |
| max_delayed_threads           | 20                                                       |
| max_error_count               | 64                                                       |
| max_heap_table_size           | 16777216                                                 |
| max_insert_delayed_threads      | 20                                                       |
| max_join_size                 | 4294967295                                               |
| max_length_for_sort_data        | 1024                                                     |
| max_prepared_stmt_count       | 16382                                                      |
| max_relay_log_size              | 0                                                          |
| max_seeks_for_key             | 4294967295                                               |
| max_sort_length               | 1024                                                     |
| max_sp_recursion_depth          | 0                                                          |
| max_tmp_tables                  | 32                                                       |
| max_user_connections            | 0                                                          |
| max_write_lock_count            | 4294967295                                               |
| multi_range_count             | 256                                                        |
| myisam_data_pointer_size        | 6                                                          |
| myisam_max_sort_file_size     | 2147483647                                               |
| myisam_recover_options          | OFF                                                        |
| myisam_repair_threads         | 1                                                          |
| myisam_sort_buffer_size       | 8388608                                                    |
| myisam_stats_method           | nulls_unequal                                              |
| net_buffer_length             | 16384                                                      |
| net_read_timeout                | 30                                                       |
| net_retry_count               | 10                                                       |
| net_write_timeout             | 60                                                       |
| new                           | OFF                                                        |
| old_passwords                 | ON                                                       |
| open_files_limit                | 1024                                                     |
| optimizer_prune_level         | 1                                                          |
| optimizer_search_depth          | 62                                                       |
| pid_file                        | /var/run/mysqld/mysqld.pid                               |
| port                            | 3306                                                     |
| preload_buffer_size           | 32768                                                      |
| profiling                     | OFF                                                        |
| profiling_history_size          | 15                                                       |
| protocol_version                | 10                                                       |
| query_alloc_block_size          | 8192                                                     |
| query_cache_limit             | 1048576                                                    |
| query_cache_min_res_unit        | 4096                                                     |
| query_cache_size                | 0                                                          |
| query_cache_type                | ON                                                       |
| query_cache_wlock_invalidate    | OFF                                                        |
| query_prealloc_size           | 8192                                                     |
| range_alloc_block_size          | 2048                                                     |
| read_buffer_size                | 131072                                                   |
| read_only                     | OFF                                                        |
| read_rnd_buffer_size            | 262144                                                   |
| relay_log_purge               | ON                                                       |
| relay_log_space_limit         | 0                                                          |
| rpl_recovery_rank             | 0                                                          |
| secure_auth                   | OFF                                                        |
| secure_file_priv                |                                                            |
| server_id                     | 0                                                          |
| skip_external_locking         | ON                                                       |
| skip_networking               | OFF                                                        |
| skip_show_database              | OFF                                                        |
| slave_compressed_protocol     | OFF                                                        |
| slave_load_tmpdir             | /tmp/                                                      |
| slave_net_timeout             | 3600                                                     |
| slave_skip_errors             | OFF                                                        |
| slave_transaction_retries     | 10                                                       |
| slow_launch_time                | 2                                                          |
| socket                          | /var/lib/mysql/mysql.sock                                  |
| sort_buffer_size                | 2097144                                                    |
| sql_big_selects               | ON                                                       |
| sql_mode                        |                                                            |
| sql_notes                     | ON                                                       |
| sql_warnings                    | OFF                                                        |
| ssl_ca                          |                                                            |
| ssl_capath                      |                                                            |
| ssl_cert                        |                                                            |
| ssl_cipher                      |                                                            |
| ssl_key                       |                                                            |
| storage_engine                  | MyISAM                                                   |
| sync_binlog                   | 0                                                          |
| sync_frm                        | ON                                                       |
| system_time_zone                | CST                                                        |
| table_cache                   | 64                                                       |
| table_lock_wait_timeout       | 50                                                       |
| table_type                      | MyISAM                                                   |
| thread_cache_size             | 0                                                          |
| thread_stack                    | 196608                                                   |
| time_format                   | %H:%i:%s                                                 |
| time_zone                     | SYSTEM                                                   |
| timed_mutexes                 | OFF                                                        |
| tmp_table_size                  | 33554432                                                 |
| tmpdir                          | /tmp/                                                      |
| transaction_alloc_block_size    | 8192                                                     |
| transaction_prealloc_size     | 4096                                                     |
| tx_isolation                    | REPEATABLE-READ