2012-04-26 12 views
10

私はmysqlクエリについて短い質問があります。MySQLクエリのテーブルとカラムの引用符は本当に必要ですか?

どのような情報が正しいですか?

SELECT * FROM Persons WHERE Year='1965' 

それとも

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

これは個人的な選択をするか、この何かが本当に何が間違っているのですか?

+0

すべての回答と編集に感謝します。だからすぐに私は答えを受け入れるだろうが(しかし、私は何を受け入れるべきか) – JochemQuery

+0

"テーブル"(そうでなければエラーを起こすだろう)のようなテーブルに名前をつけない限り、私はバックティックを使わない傾向がある。クエリーをよりクリーンにします。例外は、動的に生成されたテーブル/カラム名を使用している場合です。 – HappyTimeGopher

答えて

6

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

SELECT something FROM table WHERE where = 1; 

+1

すべての答えはかなり良いです。しかし、これは私にとって最高のものです!ありがとう。 – JochemQuery

7

通常はオペレータと見なされるwhileNOW()のようなキーワードや機能を使用しても、どちらも正しいですが、2番目のものは常に受け入れられます。

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

どちらの方法が正しい、単一引用符は、文字列の開始及び末端を示します。

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

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

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

@Cody Caughlanも、MySQL reserved wordsを使用したときに言った。

関連する問題