Каковы риски использования того же ключевого слова 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`