Трудное дело — чихать с чувством собственного достоинства (Ласло Фелеки).

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

2 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
27 мая 2019
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» также является ключевым словом, но оно не зарезервировано!

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 38

Если статья понравилась, то поделитесь ей в социальных сетях:

Читайте также

    Добавить комментарий

    Войти с помощью: 

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

    Сообщить об опечатке

    Текст, который будет отправлен нашим редакторам:

    Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

    badge
    Обратный звонок 1
    Отправить
    galka

    Спасибо! Ваша заявка принята

    close
    galka

    Спасибо! Ваша заявка принята

    close