無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 8 言語構造 :: 8.3 MySQLでの予約語の扱い
« 8.2.4 関数名の構文解析と名前解決

8.4 ユーザによって定義された変数 »
Section Navigation      [Toggle]
  • 8 言語構造
  • 8.1 リテラル値
  • 8.2 識別子
  • 8.3 MySQLでの予約語の扱い
  • 8.4 ユーザによって定義された変数
  • 8.5 コメント構文

8.3. MySQLでの予約語の扱い

SELECT、DELETE、もしくはBIGINTといった特定語はテーブルやカラム名といった識別子として使用するために予約されており、特別扱いを受けます。ビルトイン関数名に対しても同様のことが言える場合があります。

項8.2. 「識別子」を記述するのに予約語を引用符で囲む場合、その予約語は識別子として許可されます。

mysql> CREATE TABLE interval (begin INT, end INT);
ERROR 1064 (42000): You have an error in your SQL syntax ...
near 'interval (begin INT, end INT)'

mysql> CREATE TABLE `interval` (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)

例外:修飾名で点の後に続く語は識別子のため、予約語でも引用符で囲む必要はありません。

mysql> CREATE TABLE mydb.interval (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)

ビルトイン関数名は識別子として許可されますが、識別子として使用する場合は注意してください。例えば、COUNTはカラム名として許可されます。しかし、デフォルトでは、関数名と後続の‘(’文字間の関数起動では余白は許可されていません。この条件では、関数呼び出しもしくは非ファンクションコンテキストで名前が使用されているかどうかを、パーサが区別するのを許可します。関数名の認識についてより詳しく知りたい場合は次を参照してください。項8.2.4. 「関数名の構文解析と名前解決」

次のテーブルに記された語はMySQL上で明確に予約されています。5.1今後バージョンアップする時のことを考慮に入れて、使用予定のある予約語を参照してみましょう。MySQLのバージョンアップ後もカバーするマニュアルではこれらを確認できます。テーブル内のたいていの語は標準SQLでカラムもしくはテーブル名としては許可されません(例:GROUP)。MySQLがyaccパーサを使用、必要とするために、予約されている語もあります。予約語は引用符で囲まれた場合、識別子として使用できます。

ACCESSIBLE ADD ALL
ALTER ANALYZE AND
AS ASC ASENSITIVE
BEFORE BETWEEN BIGINT
BINARY BLOB BOTH
BY CALL CASCADE
CASE CHANGE CHAR
CHARACTER CHECK COLLATE
COLUMN CONDITION CONSTRAINT
CONTINUE CONVERT CREATE
CROSS CURRENT_DATE CURRENT_TIME
CURRENT_TIMESTAMP CURRENT_USER CURSOR
DATABASE DATABASES DAY_HOUR
DAY_MICROSECOND DAY_MINUTE DAY_SECOND
DEC DECIMAL DECLARE
DEFAULT DELAYED DELETE
DESC DESCRIBE DETERMINISTIC
DISTINCT DISTINCTROW DIV
DOUBLE DROP DUAL
EACH ELSE ELSEIF
ENCLOSED ESCAPED EXISTS
EXIT EXPLAIN FALSE
FETCH 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 INOUT INSENSITIVE
INSERT INT INT1
INT2 INT3 INT4
INT8 INTEGER INTERVAL
INTO IS ITERATE
JOIN KEY KEYS
KILL LEADING LEAVE
LEFT LIKE LIMIT
LINEAR LINES LOAD
LOCALTIME LOCALTIMESTAMP LOCK
LONG LONGBLOB LONGTEXT
LOOP LOW_PRIORITY MASTER_SSL_VERIFY_SERVER_CERT
MATCH MEDIUMBLOB MEDIUMINT
MEDIUMTEXT MIDDLEINT MINUTE_MICROSECOND
MINUTE_SECOND MOD MODIFIES
NATURAL NOT NO_WRITE_TO_BINLOG
NULL NUMERIC ON
OPTIMIZE OPTION OPTIONALLY
OR ORDER OUT
OUTER OUTFILE PRECISION
PRIMARY PROCEDURE PURGE
RANGE READ READS
READ_ONLY READ_WRITE REAL
REFERENCES REGEXP RELEASE
RENAME REPEAT REPLACE
REQUIRE RESTRICT RETURN
REVOKE RIGHT RLIKE
SCHEMA SCHEMAS SECOND_MICROSECOND
SELECT SENSITIVE SEPARATOR
SET SHOW SMALLINT
SPATIAL SPECIFIC SQL
SQLEXCEPTION SQLSTATE SQLWARNING
SQL_BIG_RESULT SQL_CALC_FOUND_ROWS SQL_SMALL_RESULT
SSL STARTING STRAIGHT_JOIN
TABLE TERMINATED THEN
TINYBLOB TINYINT TINYTEXT
TO TRAILING TRIGGER
TRUE UNDO UNION
UNIQUE UNLOCK UNSIGNED
UPDATE USAGE USE
USING UTC_DATE UTC_TIME
UTC_TIMESTAMP VALUES VARBINARY
VARCHAR VARCHARACTER VARYING
WHEN WHERE WHILE
WITH WRITE XOR
YEAR_MONTH ZEROFILL ?

以下はMySQL 5.1で登場する新規の予約語です。

ACCESSIBLE LINEAR MASTER_SSL_VERIFY_SERVER_CERT
RANGE READ_WRITE ?

MySQLでは、引用符で囲まれてない識別子をキーワードとして使用できますが、これは多くのユーザが以前から使用していたからです。下記リストに例を記します。

  • ACTION

  • BIT

  • DATE

  • ENUM

  • NO

  • TEXT

  • TIME

  • TIMESTAMP

Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.