转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> MySql >> 正文
MySQL 4.1.0 中文参考手册 -- 6.1 语言结构         ★★★★

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

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3065 更新时间:2009/4/22 20:56:54
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 (?) 兼容)

在启动选项章节中可以找到其它的变量的描述,SHOW VARIABLES 的描述在 SET 部分。查看章节 4.1.1 mysqld 命令行选项。查看章节 4.5.6.4 SHOW VARIABLES。查看章节 5.5.6 SET 句法。

6.1.6 注释句法

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

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

注意 -- (双长划) 注释风格要求在两个长划后至少有一个空格!

尽管服务器理解刚才描述的注释句法,但 MySQL 客户端的语法分析在 /* ... */ 注释方式上还有所限止:

  • 单引号和双引号被用来标志一个被引用字符串的开始,即使是在一个注释中。如果注释中的引号没有另一个引号与之配对,那和语法分析程序就不会认为注释结束。如果你以交互式运行 mysql,你会产生困惑,因为提示符从 mysql> 变为 ''''>">
  • 一个分号被用于指出当前 SQL 语句的结束并且跟随它的任何东西表示下一行的开始。

不论你是以交互式运行 mysql 还是将命令放在一个文件中,然后以 mysql < some-file 告诉 mysql 读取它的输入,这个限制均存在。

MySQL 支持 `--'''' ANSI SQL 注释风格,但在两个长划后必须跟有一个空格。查看章节 1.8.4.7 `--'''' 作为一个注释的开始。

6.1.7 MySQL 对保留字挑剔吗?

一个常见的问题来于试图使用 MySQL 内置的数据类型或函数名作为表的字段名来创建数据表,例如 TIMESTAMPGROUP。但是,允许你这样做(例如,ABS 是一个允许的列名),当使用函数名也是列名的函数时,函数名与后面跟着的 “(” 之间不允许存在空格。

下面的词在 MySQL 中是被明确保留的。它们大多数被 ANSI SQL92 禁止作为列或表名(例如, GROUP)。一些被保留是因为 MySQL 需要它们并且它使用的是一个 yacc 语法分析器:

单词 单词 单词 ADD ALL ALTER ANALYZE AND AS ASC AUTO_INCREMENT BDB BEFORE BERKELEYDB BETWEEN BIGINT BINARY BLOB BOTH BTREE BY CASCADE CASE CHANGE CHAR CHARACTER CHECK COLLATE COLUMN COLUMNS CONSTRAINT CREATE CROSS CURRENT_DATE CURRENT_TIME CURRENT_TIMESTAMP DATABASE DATABASES DAY_HOUR DAY_MINUTE DAY_SECOND DEC DECIMAL DEFAULT DELAYED DELETE DESC DESCRIBE DISTINCT DISTINCTROW DIV DOUBLE DROP ELSE ENCLOSED ERRORS ESCAPED EXISTS EXPLAIN FALSE FIELDS FLOAT FOR FORCE FOREIGN FROM FULLTEXT FUNCTION GRANT GROUP HASH HAVING HIGH_PRIORITY HOUR_MINUTE HOUR_SECOND IF IGNORE IN INDEX INFILE INNER INNODB INSERT INT INTEGER INTERVAL INTO IS JOIN KEY KEYS KILL LEADING LEFT LIKE LIMIT LINES LOAD LOCALTIME LOCALTIMESTAMP LOCK LONG LONGBLOB LONGTEXT LOW_PRIORITY MASTER_SERVER_ID MATCH MEDIUMBLOB MEDIUMINT MEDIUMTEXT MIDDLEINT MINUTE_SECOND MOD MRG_MYISAM

上一页  [1] [2] [3]  下一页


[MySql]PHP存取 Mysql 数据乱码终极解决方案  [MySql]解决Table xxx is marked as crashed and should …
[MySql][MySQL]快速解决"is marked as crashed and shoul…  [MySql]MySQL DELETE语法用法详解
[MySql]mysql中时间日期格式化  [MySql]修改mysql导入文件大小限制
[其他]MySql常用命令大全  [Web开发]把ACCESS的数据导入到Mysql中的方法详解
[MySql]解决mysql 1040错误Too many connections的方法  [Sql Server]Sql精妙语句--各种求值函数
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台