Использование обратных знаков вокруг имен полей

Прочитав здесь несколько ответов и комментариев к некоторым вопросам по SQL, а также узнав, что мой друг работает в месте, где существует политика, запрещающая их использование, я задался вопросом, есть ли что-нибудь плохое в использовании обратных знаков вокруг имен полей в MySQL.

То есть:

SELECT `id`, `name`, `anotherfield` ...
-- vs --
SELECT id, name, anotherfield ...
Комментарии к вопросу (4)
Решение

Используя обратные кавычки позволяет использовать альтернативные символы. В запросе пишу это's не такая проблема, а если один предполагает, что вы можете просто использовать обратные кавычки, я предполагаю, что он позволяет уйти с нелепой вещи, как

SELECT `id`, `my name`, `another field` , `field,with,comma` 

Что никак, конечно, вызовет плохо именованных таблиц.

Если вы're просто быть кратким, я не'т вижу с этим проблем, вы'Лл Примечание Если вы запустите ваш запрос как таковой

EXPLAIN EXTENDED Select foo,bar,baz 

Созданный предупредив, что вернется будет обратно-клещи и полные имена таблиц. Так что, если вы'повторно с помощью функции генерации запросов и автоматическое переписывание запросов, обратные кавычки бы сделать что-нибудь парсинга кода меньше толку.

Однако, я думаю, а не поручить ли или не вы можете использовать обратные кавычки, они должны иметь стандартные имена. Он решает больше 'и#39; проблемы.

Комментарии (2)

Единственная проблема с обратными знаками заключается в том, что они не совместимы с ANSI-SQL, например, не работают в SQL Server.

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

Комментарии (4)

На мой взгляд, имеет смысл постоянно использовать их при работе с именами полей.

  • Во-первых, если привыкнуть, то не страшно просто нажать клавишу "backtick".
  • Во-вторых, на мой взгляд, так легче понять, какие именно поля в запросе являются полями, а какие - ключевыми словами или методами.
  • Наконец, это позволяет использовать любое имя поля при проектировании таблицы. Иногда имеет смысл назвать поле "ключ", "порядок" или "значения"... и все они требуют обратного знака при обращении к ним.
Комментарии (3)

Обратные апострофы не'т часть стандарта ANSI для SQL. От в <а href="и http://dev.mysql.com/doc/refman/5.0/en/identifiers.html">руководство MySQL</а>:

если ANSI_QUOTES режим SQL включен, это также допустимо цитата идентификаторы в двойные кавычки

Так что если вы используете обратные апострофы, а затем решили отойти от MySQL, у вас проблемы (хотя вы, вероятно, есть много больше проблем так же)

Комментарии (0)

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

Как для легкого чтения, многие люди используют крышки для SQL запросам, например.

SELECT some_fied, some_other_field FROM whatever WHERE id IS NULL;
Комментарии (0)

Если вы спросите меня, обратные кавычки всегда должны быть использованы. Но есть несколько причин, почему команда может предпочесть не использовать их.

Преимущества:

  • Используя их, нет зарезервированных слов или запрещенных символов.
  • В некоторых случаях, вы получите более описательные сообщения об ошибках.
  • Если вам избежать плохой практики вы Don'т волнует, но... в реальной слово, иногда они представляют собой достойный способ избежать SQL-инъекции.

Недостатки:

  • Они не являются стандартными и, как правило, не портативный. Однако, как долго, как вы Дон'т использовать апостроф в качестве части идентификатора (что самое страшное практике я могу себе представить), вы сможете перенести свой запрос путем автоматического удаления одиночных кавычках.
  • Если некоторые из ваших запросов приходит с доступом, они могут цитировать имена таблиц с " (а может быть, вы можете'т удалить всех " вслепую). Однако, смеси обратные апострофы и двойные кавычки разрешены.
  • Некоторые глупые программного обеспечения или функции фильтрации запросов, и имеет проблемы с обратные кавычки. Тем не менее, они являются частью ASCII так это означает, что ваше программное обеспечение/функции очень плохо.
Комментарии (2)

Это'ы гораздо легче искать свой код-основу для того, в обратные апострофы. Скажем, у вас есть таблица с именем событие. грэп -р на "событий" * может вернуть сотни результатов. грэп -Р " и\мероприятие`то" *` вернется все, наверное, ссылающиеся на базе.

Комментарии (1)

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

Комментарии (0)

Простую вещь про Апостроф ` используется для обозначения идентификатора, как имя_базы_данных, имя_таблицы и т. д., а также одинарной кавычки '', двойная кавычка и" и" для строковых литералов, в то время как " и" не использовать для печати значение, так как он и '' напечатать значение переменной владение или в другом случае печатать текст его есть.

i.e 1.-> use `model`;   
    here `model` is database name not conflict with reserve keyword 'model'
2- $age = 27;
insert into `tbl_people`(`name`,`age`,`address`) values ('Ashoka','$age',"Delhi");

here i used both quote for all type of requirement. If anything not clear let me know..
Комментарии (1)

если вы используете имена полей по умолчанию MySQL или MSSQL значения, например на "информация и", Вы должны использовать обратные кавычки ( "и выберите пункт "статус" from имя_таблицы" или "выберите ID из таблицы table_name, где статус=1 с" ). потому что ошибки возвращает MySQL или не работает запрос.

Комментарии (0)

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

Например

SELECT CONCAT(Name, ' in ', city, ', ', statecode) AS `Publisher and Location`,
    COUNT(ISBN) AS "# Books",
    MAX(LENGTH(title)) AS "Longest Title",
    MIN(LENGTH(title)) AS "Shortest Title"
FROM Publisher JOIN Book
ON Publisher.PublisherID = Book.PublisherID WHERE INSTR(name, 'read')>0
GROUP BY `Publisher and Location`
HAVING COUNT(ISBN) > 1;

В инструкции выше вы видите, как издатель и расположениевгруппе` положение.

Вместо использования

группа по имени, городу, statecode

Я просто использовал

группа издателя и местоположение

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

Комментарии (0)