MySQL语言参考:语言结构(4)
时间:2008-04-20 来源:gslsok
下面是某些变量的描述:
| 变量 | 描述 |
| 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 内置的数据类型或函数名作为表的字段名来创建数据表,例如 TIMESTAMP 或 GROUP。但是,允许你这样做(例如,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 |
| NATURAL | NOT | NULL |
| NUMERIC | ON | OPTIMIZE |
| OPTION | OPTIONALLY | OR |
| ORDER | OUTER | OUTFILE |
| PRECISION | PRIMARY | PRIVILEGES |
| PROCEDURE | PURGE | READ |
| REAL | REFERENCES | REGEXP |
| RENAME | REPLACE | REQUIRE |
| RESTRICT | RETURNS | REVOKE |
| RIGHT | RLIKE | RTREE |
| SELECT | SET | SHOW |
| SMALLINT | SOME | SONAME |
| SPATIAL | SQL_BIG_RESULT | SQL_CALC_FOUND_ROWS |
| SQL_SMALL_RESULT | SSL | STARTING |
| STRAIGHT_JOIN | STRIPED | TABLE |
| TABLES | TERMINATED | THEN |
| TINYBLOB | TINYINT | TINYTEXT |
| TO | TRAILING | TRUE |
| TYPES | UNION | UNIQUE |
| UNLOCK | UNSIGNED | UPDATE |
| USAGE | USE | USER_RESOURCES |
| USING | VALUES | VARBINARY |
| VARCHAR | VARCHARACTER | VARYING |
| WARNINGS | WHEN | WHERE |
| WITH | WRITE | XOR |
| YEAR_MONTH | ZEROFILL |
以下的符号(来自上表)是被 ANSI SQL 禁止的,但是可以被 MySQL 用于列/表名。这是由于用他们命名是很自然的并且有很多的人已经使用了它们。
- ACTION
- BIT
- DATE
- ENUM
- NO
- TEXT
- TIME
- TIMESTAMP










