Как вы знаете, MySQL использует некоторые ключевые слова, и некоторые из них также зарезервированы.
Давайте посмотрим, как с этим бороться:
mysql> create table WRITE (id int auto_increment primary key, varying varchar(10), than int); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WRITE (id int auto_increment primary key, varying varchar(10), than int)' at line 1
ОК, похоже, WRITE — это ключевое слово, которое мы не можем использовать в качестве имени таблицы. У нас есть два варианта:
Давайте используем первый вариант:
mysql> create table WRITE_TBL (id int auto_increment primary key, varying varchar(10), than int); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varying varchar(10), than int)' at line 1
У нас есть вторая ошибка, на этот раз MySQL недоволен «изменением».
Давайте изменим его, используя второй вариант:
mysql> create table WRITE_TBL (id int auto_increment primary key, `varying` varchar(10), than int); Query OK, 0 rows affected (2.34 sec)
Это сработало, однако, мы уверены, что «than» также является ключевым словом, но оно не зарезервировано!
Конечно, не всегда удобно проверять руководство каждый раз, когда вы хотите проверить ключевые слова. Кроме того, в новых выпусках появляется больше ключевых слов. В случае с MySQL 8.0 было добавлено 70 новых ключевых слов !
Вот почему, MySQL предоставляет также в Information_Schemaтаблицы со всеми ключевыми словами.
mysql> select count(*) from information_Schema.keywords; +----------+ | 679 | +----------+ 1 row in set (0.10 sec
И мы можем проверить количество зарезервированных ключевых слов:
mysql> select count(*) from information_schema.keywords where reserved; +----------+ | 262 | +----------+ 1 row in set (0.01 sec
И, конечно же, мы можем проверить «than»:
mysql> select * from information_schema.keywords where word like 'than'; +------+----------+ | WORD | RESERVED | +------+----------+ | THAN | 0 | +------+----------+ 1 row in set (0.03 sec)
Действительно, это ключевое слово, но не зарезервировано.
Итак, да, в MySQL много ключевых слов, и почти 40% зарезервированы. Но это очень легко проверить, используя Information_Schemaили используя обратные галочки (но мы не рекомендуем вам делать это, и призываем вас избегать ключевых слов в ваших схемах).
оставляю свой комментарий