Прочитав здесь несколько ответов и комментариев к некоторым вопросам по SQL, а также узнав, что мой друг работает в месте, где существует политика, запрещающая их использование, я задался вопросом, есть ли что-нибудь плохое в использовании обратных знаков вокруг имен полей в MySQL.
То есть:
SELECT `id`, `name`, `anotherfield` ...
-- vs --
SELECT id, name, anotherfield ...
Используя обратные кавычки позволяет использовать альтернативные символы. В запросе пишу это's не такая проблема, а если один предполагает, что вы можете просто использовать обратные кавычки, я предполагаю, что он позволяет уйти с нелепой вещи, как
SELECT `id`, `my name`, `another field` , `field,with,comma`
Что никак, конечно, вызовет плохо именованных таблиц.
Если вы're просто быть кратким, я не'т вижу с этим проблем, вы'Лл Примечание Если вы запустите ваш запрос как таковой
EXPLAIN EXTENDED Select foo,bar,baz
Созданный предупредив, что вернется будет обратно-клещи и полные имена таблиц. Так что, если вы'повторно с помощью функции генерации запросов и автоматическое переписывание запросов, обратные кавычки бы сделать что-нибудь парсинга кода меньше толку.
Однако, я думаю, а не поручить ли или не вы можете использовать обратные кавычки, они должны иметь стандартные имена. Он решает больше 'и#39; проблемы.
Единственная проблема с обратными знаками заключается в том, что они не совместимы с ANSI-SQL, например, не работают в SQL Server.
Если есть вероятность того, что вам придется переносить свой SQL в другую базу данных, используйте двойные кавычки.
На мой взгляд, имеет смысл постоянно использовать их при работе с именами полей.
Обратные апострофы не'т часть стандарта ANSI для SQL. От в <а href="и http://dev.mysql.com/doc/refman/5.0/en/identifiers.html">руководство MySQL</а>:
если ANSI_QUOTES режим SQL включен, это также допустимо цитата идентификаторы в двойные кавычки
Так что если вы используете обратные апострофы, а затем решили отойти от MySQL, у вас проблемы (хотя вы, вероятно, есть много больше проблем так же)
Там isn'т ничего плохого, если вы держите с использованием MySQL, за исключением разве что визуальный fuziness запросов. Но они не позволяют использовать зарезервированные ключевые слова или пробелы в именах таблиц и столбцов. Это нет-нет в большинстве движков баз данных и предотвращать любые переноса на более позднее время.
Как для легкого чтения, многие люди используют крышки для SQL запросам, например.
SELECT some_fied, some_other_field FROM whatever WHERE id IS NULL;
Если вы спросите меня, обратные кавычки всегда должны быть использованы. Но есть несколько причин, почему команда может предпочесть не использовать их.
Преимущества:
Недостатки:
Это'ы гораздо легче искать свой код-основу для того, в обратные апострофы. Скажем, у вас есть таблица с именем событие
. грэп -р на "событий" *
может вернуть сотни результатов. грэп -Р " и\
мероприятие`то" *` вернется все, наверное, ссылающиеся на базе.
Насколько я знаю, вся цель использования обратных знаков заключается в том, чтобы можно было использовать имена, совпадающие с зарезервированными ключевыми словами. Поэтому, если имя не совпадает с зарезервированным ключевым словом, я не вижу причин использовать обратные знаки. Но это также не повод для их запрета.
Простую вещь про Апостроф ` используется для обозначения идентификатора, как имя_базы_данных, имя_таблицы и т. д., а также одинарной кавычки '', двойная кавычка и" и" для строковых литералов, в то время как " и" не использовать для печати значение, так как он и '' напечатать значение переменной владение или в другом случае печатать текст его есть.
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..
если вы используете имена полей по умолчанию MySQL или MSSQL значения, например на "информация и", Вы должны использовать обратные кавычки ( "и выберите пункт "статус" from имя_таблицы" или "выберите ID из таблицы table_name, где статус
=1 с" ).
потому что ошибки возвращает MySQL или не работает запрос.
Главное использовать обратные кавычки (`) в 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
Я просто использовал
группа издателя и местоположение
Только когда такие ситуации возникают, целесообразно использовать обратные апострофы. В любое другое время, используя двойные кавычки рекомендуется.