mysql クエリについて質問があります。
何が正しいですか?
SELECT * FROM Persons WHERE Year='1965'
または
SELECT * FROM `Persons` WHERE `Year` = '1965'
これは個人的な選択ですか、それとも本当に間違っていることですか?
識別子 (列、テーブル名、演算子など) に MySQL の予約語が含まれている場合は、引用符が必要です。
予約語の完全なリストについては、こちらを参照してください: http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html
どちらも正しいですが、通常は演算子と見なされるwhile
andのようなキーワードや関数を使用する場合でも、2 番目のものは常に受け入れられます。NOW()
table
、という名前のテーブル、またはという名前の列がある場合はどうなりますかwhere
。これらは予約済みのキーワードです。バッククォートなしでクエリでそれらを使用した場合、それらは無効なクエリを生成します(もちろん、予約されたキーワードを使用することは悪い習慣です)。
SELECT something FROM table WHERE where = 1;
対。
SELECT something FROM `table` WHERE `where` = 1;
どちらの方法も正しく、一重引用符は文字列の開始と終了を示します。
したがって、たとえば、次のようなスペースで列エイリアスを使用する場合は、次のようBirth year
に一重引用符を使用する必要があります。
... WHERE `Birth year` = `1965`
ただし、エイリアスに複数の単語のみを使用することはお勧めしません。
また、@Cody Caughlan がMySQL の予約語を使用するときにも言ったように。