Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1475893
  • 博文数量: 295
  • 博客积分: 10051
  • 博客等级: 上将
  • 技术积分: 3850
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-11 08:50
文章分类

全部博文(295)

文章存档

2011年(1)

2009年(4)

2008年(290)

我的朋友

分类: Mysql/postgreSQL

2008-04-20 11:08:02

下面是某些变量的描述:

变量 描述
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 部分。查看章节 。查看章节 。查看章节 。

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 注释风格,但在两个长划后必须跟有一个空格。查看章节 。

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
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
(T113)
阅读(1322) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~