Поиск по сайту:
Лучше смеяться, не будучи счастливым, чем умереть, не посмеявшись (Ф. Ларошфуко).

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

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 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Спасибо!

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