9.3 예약어
SELECT
, DELETE
또는 BIGINT
등의 특정 단어는 테이블 이름과 컬럼 이름과 같은 식별자로 사용하기 위해 예약되어 있으며, 특별한 취급이 필요합니다. 이것은 내장 함수의 이름에도 적용될 수 있습니다.
섹션 9.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
는 컬럼 이름으로 허용됩니다. 그러나 기본적으로 함수 호출에서 함수 이름과 후속 ' (
'문자 사이에 공백을 넣지 수 있도록되어 있습니다.이 요구 사항에 따라 파서는 그 이름이 함수 호출에서 사용되는 것인지, 아니면 함수가 아닌 컨텍스트에서 사용되는지를 확인할 수 있습니다. 함수 이름의 식별에 대한 자세한 내용은 섹션 9.2.4 "함수 이름의 구문 분석과 해결" 을 참조하십시오.
다음 표의 용어는 MySQL 5.6에서 명시 적으로 예약되어 있습니다. 또한 _FILENAME
도 예약되어 있습니다. 향후 버전 업 할 때를 고려하여 사용 예정인 예약어를 확인하는 것이 좋습니다. 새로운 버전의 MySQL을 다룬 설명서에서도 이들을 확인할 수 있습니다. 테이블의 대부분의 단어는 컬럼 이름이나 테이블 이름으로 표준 SQL에서 허용되지 않습니다 ( GROUP
등). 일부는 MySQL이 필요하고 yacc 파서를 사용하기 때문에 예약되어 있습니다. 예약어는 따옴표로 묶으면 식별자로 사용할 수 있습니다.
버전 간의 차이도 포함 예약어의 전체 목록은 Keywords and Reserved Words in MySQL 5.6 을 참조하십시오.
표 9.2 MySQL 5.6에서 예약어
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 |
GET | 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 | IO_AFTER_GTIDS |
IO_BEFORE_GTIDS | IS | ITERATE |
JOIN | KEY | KEYS |
KILL | LEADING | LEAVE |
LEFT | LIKE | LIMIT |
LINEAR | LINES | LOAD |
LOCALTIME | LOCALTIMESTAMP | LOCK |
LONG | LONGBLOB | LONGTEXT |
LOOP | LOW_PRIORITY | MASTER_BIND |
MASTER_SSL_VERIFY_SERVER_CERT | MATCH | MAXVALUE |
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 | PARTITION | PRECISION |
PRIMARY | PROCEDURE | PURGE |
RANGE | READ | READS |
READ_WRITE | REAL | REFERENCES |
REGEXP | RELEASE | RENAME |
REPEAT | REPLACE | REQUIRE |
RESIGNAL | RESTRICT | RETURN |
REVOKE | RIGHT | RLIKE |
SCHEMA | SCHEMAS | SECOND_MICROSECOND |
SELECT | SENSITIVE | SEPARATOR |
SET | SHOW | SIGNAL |
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 |
표 9.3 MySQL 5.5과 비교 한 MySQL 5.6의 새로운 예약어
GET | IO_AFTER_GTIDS | IO_BEFORE_GTIDS |
MASTER_BIND | PARTITION |
MySQL은 이전에 많은 사람들이 사용하고 있었으므로, 일부 키워드를 따옴표로 묶지 식별자로 사용하는 것을 허용하고 있습니다. 다음 목록을 보여줍니다.
ACTION
BIT
DATE
ENUM
NO
TEXT
TIME
TIMESTAMP