9.3. 사용 지정 단어 (Reserved Words)
SELECT, DELETE, 또는 BIGINT와 같은 단어는 사용이 지정되어 있기 때문에, 이러한 단어를 테이블 이름 및 컬럼 이름과 같은 아이덴티파이어로 사용하고자 할 때에는 특별한 주의가 필요하다. 빌트-인 함수 이름으로 사용하고자 할 때에도 마찬가지이다.
사용 지정 단어 (Reserved Words)에 인용 부호를 사용하면 아이덴티파이어로 사용할 수가 있다:
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)
예외 사항: 점 (period) 다음에 나오는 단어는 반드시 아이덴티파이어이어야 하기 때문에, 그 단어가 사용 지정 단어일 지라도 인용 부호를 사용할 필요는 없다:
mysql> CREATE TABLE mydb.interval (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)
빌트-인 함수 이름은 아이덴티파이어로 사용 가능하지만 사용할 때 주의를 하도록 한다. 예를 들면, COUNT는 컬럼 이름으로 사용이 가능하지만, 함수를 선언할 때에는 디폴트로 함수 이름과 “(” 문자 사이에 화이트스페이스를 사용할 수가 없다.
MySQL 5.1에서 사용이 지정된 단어는 아래 테이블에 열거되어 있다. 사용 지정된 단어를 아이덴티파이러로 사용하고자 하는 경우에는 인용 부호를 사용하도록 한다.
|
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 |
|
|
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 |
|
|
UNIQUE |
UNLOCK |
UNSIGNED |
|
UPDATE |
USAGE |
USE |
|
USING |
UTC_DATE |
UTC_TIME |
|
UTC_TIMESTAMP |
VALUES |
VARBINARY |
|
VARCHAR |
VARCHARACTER |
VARYING |
|
WHEN |
WHERE |
WHILE |
|
WITH |
WRITE |
X509 |
|
XOR |
YEAR_MONTH |
ZEROFILL |
아래에 나와 있는 단어는 MySQL 5.1에서 새롭게 추가된 사용 지정 단어이다:
|
ACCESSIBLE |
LINEAR |
MASTER_SSL_VERIFY_SERVER_CERT |
|
RANGE |
READ_ONLY |
READ_WRITE |
아래에 나와 있는 단어는 인용 부호를 사용하지 않은 채 아이덴티파이어로 사용이 가능한 것들이다:
- ACTION
- BIT
- DATE
- ENUM
- NO
- TEXT
- TIME
- TIMESTAMP