Логотип

MySQL 8.0 и ключевые слова

MySQL 8.0 и ключевые слова

Как вы знаете, 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 — это ключевое слово, которое мы не можем использовать в качестве имени таблицы. У нас есть два варианта:

  • переименуйте таблицу во что-то еще, например WRITE_TBL
  • используйте back-ticks (`) в таблице, как`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» также является ключевым словом, но оно не зарезервировано!

Читать  Как использовать оператор SELECT TOP в MySQL

Конечно, не всегда удобно проверять руководство каждый раз, когда вы хотите проверить ключевые слова. Кроме того, в новых выпусках появляется больше ключевых слов. В случае с 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или используя обратные галочки (но мы не рекомендуем вам делать это, и призываем вас избегать ключевых слов в ваших схемах).

Редактор: AndreyEx

Рейтинг: 4.7 (6 голосов)
Если статья понравилась, то поделитесь ей в социальных сетях:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Это может быть вам интересно


Спасибо!

Теперь редакторы в курсе.

Прокрутить страницу до начала