Прочитав пару ответов и комментариев по некоторым вопросам SQL здесь, а также услышав, что мой друг работает в месте, где есть политика, которая запрещает его, я задаюсь вопросом, есть ли что-то не так с использованием обратных галочек вокруг имен полей в MySQL ,
То есть:
SELECT `id`, `name`, `anotherfield` ...
-- vs --
SELECT id, name, anotherfield ...
count
,type
,table
или аналогичныеcount
,type
иtable
. Это ужасно неоднозначные термины, и почти в каждом случае эти имена можно было бы улучшить, чтобы быть более конкретными. Присвоение именам таких столбцов также опасно и может стать источником ошибок, поскольку вы никогда не знаете, когда кто-то может забыть добавить обратные пометки или не осознает, что должен это делать. Я думаю, что лучше избегать использования зарезервированных терминов в качестве имен столбцов.Ответы:
Использование обратных галочек позволяет использовать альтернативные символы. В написании запросов это не такая проблема, но если предположить, что вы можете просто использовать обратные пометки, я бы предположил, что это позволяет вам избежать нелепых вещей вроде
Который, конечно, генерирует плохо именованные таблицы.
Если вы просто лаконичны, я не вижу проблем с этим, вы заметите, если вы выполните свой запрос как таковой
Сгенерированное предупреждение, которое будет возвращено, будет иметь галочки и полные имена таблиц. Поэтому, если вы используете функции генерации запросов и автоматическое переписывание запросов, обратные пометки сделают все, что разбирает ваш код, менее запутанным.
Однако я думаю, что вместо того, чтобы указывать, можете ли вы использовать обратные метки, у них должен быть стандарт для имен. Это решает больше «реальных» проблем.
источник
select count from foo
vsselect "count" from foo
даст очень разные результаты. Но postgres отличается от mysql двумя способами: 1. Поля цитируются""
. 2. Поля без кавычек нечувствительны к регистру postgresql.org/docs/current/static/…Единственная проблема с обратными галочками заключается в том, что они не совместимы с ANSI-SQL, например, они не работают в SQL Server.
Если есть вероятность, что вам придется перенести SQL в другую базу данных, используйте двойные кавычки.
источник
range
или что - то подобное. Когда мы обновились до MySQL 5, это не удалось, потому что это было новое зарезервированное слово!app_key_stores
ГДЕ ("ключ" = 'c5cc4f30-31f3-0130-505e-14dae9da9fc5_range'); Запрос в порядке, затронуто 0 строк (0,00 с) УДАЛИТЬ ОТapp_key_stores
ГДЕ (key
= 'c5cc4f30-31f3-0130-505e-14dae9da9fc5_range'); Запрос в порядке, затронуто 5 строк (0,00 с)Для меня имеет смысл постоянно использовать их при работе с именами полей.
источник
Обратные знаки не являются частью стандартного ANSI SQL. Из руководства по MySQL :
Так что, если вы используете обратные пометки, а затем решили отойти от MySQL, у вас есть проблема (хотя у вас, вероятно, есть и более серьезные проблемы)
источник
Нет ничего плохого, если вы продолжаете использовать MYSQL, за исключением, может быть, визуальной нечеткости запросов. Но они позволяют использовать зарезервированные ключевые слова или встроенные пробелы в качестве имен таблиц и столбцов. Это нет-нет с большинством механизмов баз данных и предотвратит любую миграцию позже.
Что касается легкого чтения, многие люди используют заглавные буквы для ключевых слов SQL, например.
источник
Если вы спросите меня, всегда следует использовать галочки. Но есть некоторые причины, по которым команда может предпочесть не использовать их.
Преимущества:
Недостатки:
источник
Гораздо проще искать в вашей кодовой базе что-то в обратном трюке. Скажем, у вас есть таблица с именем
event
.grep -r "event" *
может вернуть сотни результатов.grep -r "\`event\`" *
вернет что-нибудь, вероятно, ссылаясь на вашу базу данных.источник
Ну, насколько я знаю, вся цель использования обратных галочек состоит в том, чтобы вы могли использовать имена, которые совпадают с зарезервированными ключевыми словами. Поэтому, если имя не совпадает с зарезервированным ключевым словом, я не вижу причин использовать обратные пометки. Но это тоже не причина их запрещать.
источник
Простая вещь о backtick `` используется для обозначения идентификатора, такого как database_name, table_name и т. Д., И одинарная кавычка '' , двойная кавычка "" для строковых литералов, тогда как "" используется для вывода значения в том виде, как оно есть, и '' печать значения переменной hold или в другом случае распечатайте текст его ключа.
источник
если вы используете некоторые имена полей в качестве значений по умолчанию для mysql или mssql, например, «status», вы должны использовать обратные галочки («select
status
from table_name» или «select id from table_name wherestatus
= 1»). потому что mysql возвращает ошибки или не работает запрос.источник
Основное использование обратных символов (`) в SQL - это использовать их в ситуациях, когда вы будете вызывать их снова в следующих предложениях. В любое другое время рекомендуется использовать двойные кавычки ("").
Например
В приведенном выше утверждении вы видите, как
Publisher and Location
используется снова вGROUP BY
предложении.Вместо того, чтобы использовать
Я просто использовал
Только когда такие ситуации возникают, полезно использовать обратные метки. Во всех остальных случаях рекомендуется использовать двойные кавычки.
источник