一般的な問題の 1
つとして、TIMESTAMP
や
GROUP
など、MySQL
に組み込まれているデータ型や関数の名前を使用するカラム名を含むテーブルの作成に関連する問題があります。このようなカラム名を含むテーブルの作成は可能です(たとえば、ABS
はカラム名として使用可能です)。しかし、デフォルトでは、関数の呼び出し時に、関数名とそれに続く
‘(
’
文字との間に空白を挿入することはできません。これは、関数呼び出しをカラム名の参照と区別するためです。
--ansi
または
--sql-mode=IGNORE_SPACE
オプションを指定してサーバを起動した場合は、関数呼び出しで、関数名とそれに続く
‘(
’
文字との間に空白を挿入することができます。これらのオプションを指定すると、関数名が予約語として扱われるようになります。そのため、関数名と同一のカラム名は、項6.1.2. 「データベース名、テーブル名、インデックス名、カラム名、エイリアス名」
で説明しているように引用符で囲む必要があります。
以下の語は MySQL
において明示的に予約されています。これらの語のほとんど(たとえば、GROUP
)は、SQL-92
では、カラム名またはテーブル名としての使用を禁止されています。
いくつかの語は、MySQL
でそれらの語を必要とし、(現在)MySQL で
yacc
パーサが使用されていることから予約されています。
ADD |
ALL |
ALTER |
ANALYZE |
AND |
AS |
ASC |
BEFORE |
BETWEEN |
BIGINT |
BINARY |
BLOB |
BOTH |
BY |
CASCADE |
CASE |
CHANGE |
CHAR |
CHARACTER |
CHECK |
COLLATE |
COLUMN |
COLUMNS |
CONSTRAINT |
CONVERT |
CREATE |
CROSS |
CURRENT_DATE |
CURRENT_TIME |
CURRENT_TIMESTAMP |
CURRENT_USER |
DATABASE |
DATABASES |
DAY_HOUR |
DAY_MICROSECOND |
DAY_MINUTE |
DAY_SECOND |
DEC |
DECIMAL |
DEFAULT |
DELAYED |
DELETE |
DESC |
DESCRIBE |
DISTINCT |
DISTINCTROW |
DIV |
DOUBLE |
DROP |
DUAL |
ELSE |
ENCLOSED |
ESCAPED |
EXISTS |
EXPLAIN |
FALSE |
FIELDS |
FLOAT |
FLOAT4 |
FLOAT8 |
FOR |
FORCE |
FOREIGN |
FROM |
FULLTEXT |
GRANT |
GROUP |
HAVING |
HIGH_PRIORITY |
HOUR_MICROSECOND |
HOUR_MINUTE |
HOUR_SECOND |
IF |
IGNORE |
IN |
INDEX |
INFILE |
INNER |
INSERT |
INT |
INT1 |
INT2 |
INT3 |
INT4 |
INT8 |
INTEGER |
INTERVAL |
INTO |
IS |
JOIN |
KEY |
KEYS |
KILL |
LEADING |
LEFT |
LIKE |
LIMIT |
LINES |
LOAD |
LOCALTIME |
LOCALTIMESTAMP |
LOCK |
LONG |
LONGBLOB |
LONGTEXT |
LOW_PRIORITY |
MATCH |
MEDIUMBLOB |
MEDIUMINT |
MEDIUMTEXT |
MIDDLEINT |
MINUTE_MICROSECOND |
MINUTE_SECOND |
MOD |
NATURAL |
NOT |
NO_WRITE_TO_BINLOG |
NULL |
NUMERIC |
ON |
OPTIMIZE |
OPTION |
OPTIONALLY |
OR |
ORDER |
OUTER |
OUTFILE |
PRECISION |
PRIMARY |
PRIVILEGES |
PROCEDURE |
PURGE |
READ |
REAL |
REFERENCES |
REGEXP |
RENAME |
REPLACE |
REQUIRE |
RESTRICT |
REVOKE |
RIGHT |
RLIKE |
SECOND_MICROSECOND |
SELECT |
SEPARATOR |
SET |
SHOW |
SMALLINT |
SONAME |
SPATIAL |
SQL_BIG_RESULT |
SQL_CALC_FOUND_ROWS |
SQL_SMALL_RESULT |
SSL |
STARTING |
STRAIGHT_JOIN |
TABLE |
TABLES |
TERMINATED |
THEN |
TINYBLOB |
TINYINT |
TINYTEXT |
TO |
TRAILING |
TRUE |
UNION |
UNIQUE |
UNLOCK |
UNSIGNED |
UPDATE |
USAGE |
USE |
USING |
UTC_DATE |
UTC_TIME |
UTC_TIMESTAMP |
VALUES |
VARBINARY |
VARCHAR |
VARCHARACTER |
VARYING |
WHEN |
WHERE |
WITH |
WRITE |
XOR |
YEAR_MONTH |
ZEROFILL |
以下はMySQL 4.0で登場する新規の予約語です。
CHECK |
FORCE |
LOCALTIME |
LOCALTIMESTAMP |
REQUIRE |
SQL_CALC_FOUND_ROWS |
SSL |
XOR |
以下はMySQL 4.1で登場する新規の予約語です。
BEFORE |
COLLATE |
CONVERT |
CURRENT_USER |
DAY_MICROSECOND |
DIV |
DUAL |
FALSE |
HOUR_MICROSECOND |
MINUTE_MICROSECOND |
MOD |
NO_WRITE_TO_BINLOG |
SECOND_MICROSECOND |
SEPARATOR |
SPATIAL |
TRUE |
UTC_DATE |
UTC_TIME |
UTC_TIMESTAMP |
VARCHARACTER |
以下のシンボル(上の表に含まれるもの)は SQL-99 では使用を禁止されていますが、MySQL ではカラム名またはテーブル名として使用可能です。これは、それらの名前がごく一般的なものであり、多くの人々にすでに使用されているためです。
ACTION
BIT
DATE
ENUM
NO
TEXT
TIME
TIMESTAMP
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.