Запутался с выбором данных из БД в MySQL

У меня есть 2 таблицы: PLAYER а также GROUP,

Когда я звоню:

SELECT * FROM PLAYER

Все ок но когда звоню

SELECT * FROM GROUP

Есть ошибка:

#1064 - у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с 'GROUP' в строке 1`

Я не понимаю, почему такая ошибка.

3 ответа

Решение

GROUP является зарезервированным ключевым словом. Вы должны избежать этого, вот так

  SELECT * FROM `GROUP`

Что следует отметить:

  • Настоятельно рекомендуется не называть таблицу groupлучше использовать множественное число Groups,
  • Также старайтесь избегать *,

GROUP является зарезервированным словом, и его нужно экранировать обратными галочками.

SELECT * FROM `GROUP`

Также лучше избегать использования имен таблиц или столбцов, которые являются зарезервированными словами. Также укажите список столбцов и не используйте *,

Точно так же, как вы используете зарезервированные ключевые слова SELECT и FROM для построения вашего запроса, есть и другие зарезервированные ключевые слова, подобные тем, которые приведены в следующем списке, которые вы можете избегать при именовании всех таблиц, представлений, ограничений и столбцов.

Список (некоторых) зарезервированных ключевых слов: ГДЕ, ЗАКАЗАТЬ, ГРУППА, ОБНОВЛЕНИЕ, УДАЛИТЬ, ПРОВЕРИТЬ, ИЗМЕНИТЬ, НРАВИТСЯ и т. Д.

Таким образом, в вашем случае ядро ​​БД жалуется, потому что для запроса требуется 1 обязательное предложение SELECT и необязательные предложения FROM, WHERE, ORDER BY, GROUP BY, HAVING, LIMIT и т.д... подробнее здесь

Мы могли бы испытать желание использовать эти ключевые слова; особенно если они были смоделированы в нашей проблемной области (или в диаграммах). Например, клиент, размещающий заказ, выдает 2 сущности CLIENT и ORDER и т. Д. Или механик, выполняющий проверку, выдающий MECHANIC и CHECK. или даже FACEBOOK_USER, выражающий LIKE. или в вашем случае может быть, например, ГРУППА ЛЮДЕЙ.

Как правило, вы можете преобразовывать свои сущности так, чтобы избежать проблем: -

а) Сущность всегда моделируется (на бумаге) как единственное число, поскольку она представляет концепцию / актив / человека в реальном мире или проблемной области. например. ЗАКАЗАТЬ, НРАВИТСЯ, ПРОВЕРИТЬ, СТУДЕНТ, АВТОМОБИЛЬ

б) соответствующая таблица БД, в которую она преобразована, всегда именуется с использованием множественного числа. Логика заключается в том, что таблица будет содержать множество экземпляров этого объекта. Поэтому ЗАКАЗЫ, НРАВИТСЯ, ЧЕКИ, СТУДЕНТЫ, АВТОМОБИЛИ

В конце концов, вы решаете, потому что вы действительно можете использовать GROUP, если вы действительно хотите или должны сделать имя таблицы похожим на зарезервированное слово. Просто не забудьте дать им особую обработку, заключая их в кавычки, используя обратный тик ("` ") при запросах. В момент создания движок БД не будет жаловаться, полагая, что вы знаете, что делаете.

Другие вопросы по тегам