Последние новости:

Поиск по сайту:

Если одна дверь закрыта, другая открывается (Сервантес).

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

1 мин для чтения
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (2 оценок, среднее: 5,00 из 5)
Загрузка...
27.05.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.

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

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

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии

Статьи партнеров:

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x

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

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

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

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

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

close

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

close