Нужны ли кавычки вокруг таблиц и столбцов в запросе MySQL?

У меня есть короткий вопрос о запросе mysql.

Что правильно?

SELECT * FROM Persons WHERE Year='1965'

или

SELECT * FROM `Persons` WHERE `Year` = '1965'

Это личный выбор или это что-то действительно не так?

Ответ 1

Что делать, если у вас есть таблица с именем table или столбец с именем where. Это зарезервированные ключевые слова. Если вы использовали те, что были в ваших запросах без обратных ссылок, они создавали бы недопустимый запрос (конечно, использование зарезервированных ключевых слов - плохая практика).

SELECT something FROM table WHERE where = 1;

против.

SELECT something FROM `table` WHERE `where` = 1;

Ответ 2

Котировки необходимы, если ваши идентификаторы (столбцы, имена таблиц, операторы и т.д.) содержат зарезервированные слова MySQL.

См. здесь полный список зарезервированных слов: http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

Ответ 3

Оба правильные, но второй будет приниматься ВСЕГДА, даже если вы используете ключевые слова или функции типа while и NOW(), которые обычно рассматриваются как операторы.

Ответ 4

Оба метода верны, одинарная кавычка указывает начало и конец строки.

Поэтому, если вы, например, используете псевдоним столбца с пробелом, подобным Birth year, тогда вам нужно будет использовать одиночный кавычек следующим образом:

... WHERE `Birth year` = `1965`

Однако не рекомендуется использовать только более одного слова в псевдонимах.

И как @Cody Caughlan сказал также, когда вы используете зарезервированные слова MySQL.