私はmysqlクエリについて短い質問があります。MySQLクエリのテーブルとカラムの引用符は本当に必要ですか?
どのような情報が正しいですか?
SELECT * FROM Persons WHERE Year='1965'
それとも
SELECT * FROM `Persons` WHERE `Year` = '1965'
これは個人的な選択をするか、この何かが本当に何が間違っているのですか?
私はmysqlクエリについて短い質問があります。MySQLクエリのテーブルとカラムの引用符は本当に必要ですか?
どのような情報が正しいですか?
SELECT * FROM Persons WHERE Year='1965'
それとも
SELECT * FROM `Persons` WHERE `Year` = '1965'
これは個人的な選択をするか、この何かが本当に何が間違っているのですか?
何がtable
という名前のテーブル、またはwhere
という名前の列を持っている場合。これらは予約済みのキーワードです。あなたがバックティックなしであなたの質問にそれらを使用した場合、彼らは無効なクエリを生成します(もちろん、予約されたキーワードを使用することは悪い習慣です)。
SELECT something FROM table WHERE where = 1;
対
すべての答えはかなり良いです。しかし、これは私にとって最高のものです!ありがとう。 – JochemQuery
通常はオペレータと見なされるwhile
とNOW()
のようなキーワードや機能を使用しても、どちらも正しいですが、2番目のものは常に受け入れられます。
識別子(列、テーブル名、演算子など)にMySQL予約語が含まれている場合は、引用符が必要です。
は予約語の完全なリストについては、こちらをご覧ください:http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
SELECT something FROM `table` WHERE `where` = 1;
どちらの方法が正しい、単一引用符は、文字列の開始及び末端を示します。
したがって、たとえば、Birth year
のようなスペースを持つカラムエイリアスを使用する場合は、このように一重引用符を使用する必要があります。
... WHERE `Birth year` = `1965`
ただし、複数のエイリアスを使用することはお勧めしません。
@Cody Caughlanも、MySQL reserved wordsを使用したときに言った。
すべての回答と編集に感謝します。だからすぐに私は答えを受け入れるだろうが(しかし、私は何を受け入れるべきか) – JochemQuery
"テーブル"(そうでなければエラーを起こすだろう)のようなテーブルに名前をつけない限り、私はバックティックを使わない傾向がある。クエリーをよりクリーンにします。例外は、動的に生成されたテーブル/カラム名を使用している場合です。 – HappyTimeGopher