Каковы риски использования того же ключевого слова MySQL, что и в столбце таблицы?

Я уже развернул проект с тем же полем столбца и ключевым словом MySQL, используя PHP. Я только что получил предупреждение, как показано ниже, когда я использую PhpMyAdmin для управления базой данных снова сегодня.

The column name 'order' is a MySQL reserved keyword.

Мой проект все еще работает с ключевым словом order как имя столбца.

Мой вопрос what are the risks or ... when we're using the same keyword of MySQL as table column?

2 ответа

Риски? Вы столкнулись с риском: запрос не запускается, поэтому вы должны его исправить.

Для большинства ключевых слов маловероятно, что ключевое слово будет перепутано с идентификатором и все равно будет выдан правильный запрос. Конечно, вы могли бы привести несколько загадочных примеров.

Исправление состоит в том, чтобы избежать идентификаторов. MySQL использует обратные метки для экранирования. Другие базы данных используют двойные кавычки или квадратные скобки. Таким образом, существует еще один риск: чем больше вы используете обратных трюков, тем менее переносим ваш код.

Для меня основной причиной является удобочитаемость и читаемость. Клавиша backtick на моей клавиатуре расположена в верхнем левом углу, где мой маленький мизинец должен тянуться к нему далеко. Я нахожу чтение полученного кода более громоздким с большим количеством загадочных символов, плавающих вокруг. Для ясности избегайте экранирования идентификаторов. Отказ от зарезервированных слов и использование только букв, цифр и подчеркивания вполне достаточно.

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

Используйте backticks(`) вокруг порядка в вашем запросе.

Пример:

SELECT *
FROM TableName
WHERE `order`='someval'

Примечание:

Обратные метки должны использоваться для идентификаторов таблицы и столбца, но они необходимы только в том случае, если идентификатор является зарезервированным ключевым словом MySQL или когда идентификатор содержит пробельные символы или символы за пределами ограниченного набора, часто рекомендуется избегать использования зарезервированных ключевых слов в качестве столбца или идентификаторы таблиц, когда это возможно, избегая кавычек.

Обратные галочки необходимы для ситуаций, подобных следующим:

SELECT id, `my name`, `another field` , `field,with,comma`
Другие вопросы по тегам