10

mysql クエリについて質問があります。

何が正しいですか?

SELECT * FROM Persons WHERE Year='1965'

または

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

これは個人的な選択ですか、それとも本当に間違っていることですか?

4

4 に答える 4

9

識別子 (列、テーブル名、演算子など) に MySQL の予約語が含まれている場合は、引用符が必要です。

予約語の完全なリストについては、こちらを参照してください: http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

于 2012-04-26T17:48:47.370 に答える
7

どちらも正しいですが、通常は演算子と見なされるwhileandのようなキーワードや関数を使用する場合でも、2 番目のものは常に受け入れられます。NOW()

于 2012-04-26T17:48:16.173 に答える
6

table、という名前のテーブル、またはという名前の列がある場合はどうなりますかwhere。これらは予約済みのキーワードです。バッククォートなしでクエリでそれらを使用した場合、それらは無効なクエリを生成します(もちろん、予約されたキーワードを使用することは悪い習慣です)。

SELECT something FROM table WHERE where = 1;

対。

SELECT something FROM `table` WHERE `where` = 1;
于 2012-04-26T17:52:02.640 に答える
2

どちらの方法も正しく、一重引用符は文字列の開始と終了を示します。

したがって、たとえば、次のようなスペースで列エイリアスを使用する場合は、次のようBirth yearに一重引用符を使用する必要があります。

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

ただし、エイリアスに複数の単語のみを使用することはお勧めしません。

また、@Cody Caughlan がMySQL の予約語を使用するときにも言ったように。

于 2012-04-26T18:00:08.783 に答える