Синтаксис комментариев
Сервер 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 поддерживает принятый в ANSI SQL способ комментирования с помощью двойного тире '--' только в том случае, если после второго тире следует пробел (cм. раздел Символы '--' как начало комментария).
"Придирчив" ли MySQL к зарезервированным словам?
Это общая проблема, возникающая при попытке создать таблицу с именами столбцов, использующих принятые в MySQL названия типов данных или функций, такие как TIMESTAMP или GROUP . Иногда это возможно (например, ABS является разрешенным именем для столбца), но не допускается пробел между именем функции и сразу же следующей за ним скобкой '(' при использовании имен функций, совпадающих с именами столбцов.
Следующие слова являются зарезервированными в MySQL. Большинство из них не допускаются в ANSI SQL92 как имена столбцов и/или таблиц (например GROUP). Некоторые зарезервированы для нужд MySQL и используются (в настоящее время) синтаксическим анализатором yacc :
Слово | Слово | Слово | ADD | ALL | ALTER | ANALYZE | AND | AS | ASC | AUTO_INCREMENT | BDB | BERKELEYDB | BETWEEN | BIGINT | BINARY | BLOB | BOTH | BY | CASCADE | CASE | CHANGE | CHAR | CHARACTER | 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 | DOUBLE | DROP | ELSE | ENCLOSED | ESCAPED | EXISTS | EXPLAIN | FIELDS | FLOAT | FOR | FOREIGN | FROM | FULLTEXT | FUNCTION | GRANT | GROUP | HAVING | HIGH_PRIORITY | HOUR_MINUTE | HOUR_SECOND | IF | IGNORE | IN | INDEX | INFILE | INNER | INNODB | INSERT | INSERT_ID | INT | INTEGER | INTERVAL | INTO | IS | JOIN | KEY | KEYS | KILL | LAST_INSERT_ID | LEADING | LEFT | LIKE | LIMIT | LINES | LOAD | LOCK | LONG | LONGBLOB | LONGTEXT | LOW_PRIORITY | MASTER_SERVER_ID | MATCH | MEDIUMBLOB | MEDIUMINT | MEDIUMTEXT | MIDDLEINT | MINUTE_SECOND | MRG_MYISAM | NATURAL | NOT | NULL | NUMERIC | ON | OPTIMIZE | OPTION | OPTIONALLY | OR | ORDER | OUTER | OUTFILE | PARTIAL | PRECISION | PRIMARY | PRIVILEGES | PROCEDURE | PURGE | READ | REAL | REFERENCES | REGEXP | RENAME | REPLACE | REQUIRE | RESTRICT | RETURNS | REVOKE | RIGHT | RLIKE | SELECT | SET | SHOW | SMALLINT | SONAME | SQL_AUTO_IS_NULL | SQL_BIG_RESULT | SQL_BIG_SELECTS | SQL_BIG_TABLES | SQL_BUFFER_RESULT | SQL_CALC_FOUND_ROWS | SQL_LOG_BIN | SQL_LOG_OFF | SQL_LOG_UPDATE | SQL_LOW_PRIORITY_UPDATES | SQL_MAX_JOIN_SIZE | SQL_QUOTE_SHOW_CREATE | SQL_SAFE_UPDATES | SQL_SELECT_LIMIT | SQL_SLAVE_SKIP_COUNTER | SQL_SMALL_RESULT | SQL_WARNINGS | SSL | STARTING | STRAIGHT_JOIN | STRIPED | TABLE | TABLES | TERMINATED | THEN | TINYBLOB | TINYINT | TINYTEXT | TO | TRAILING | UNION | UNIQUE | UNLOCK | UNSIGNED | UPDATE | USAGE | USE | USER_RESOURCES | USING | VALUES | VARBINARY | VARCHAR | VARYING | WHEN | WHERE | WITH | WRITE | YEAR_MONTH | ZEROFILL | |
Следующие символы (из приведенной выше таблицы таблицы) не разрешены в ANSI SQL, но допускаются в MySQL как имена столбцов/таблиц. Это объясняется тем, что некоторые из этих имен являются словами естественного языка и уже использованы многими потребителями.
ACTION
BIT
DATE
ENUM
NO
TEXT
TIME
TIMESTAMP
1 2 3 4
8 8 8
| |