テーブルの1つに。という名前を付けたいと思いORDER
ます。SQLキーワードで名前として使用できますか?この習慣はどれほど悪いですか?そうするかどうか?
そして、そのような状況がすでに存在する場合、クエリでこのテーブルの名前をどのように使用しますか?たとえば、次のようにします。
SELECT * FROM ORDER;
また
SELECT * FROM ORDER ORDER BY NAME;
ORDER
予約キーワードであるように、tableNameをバックティックでラップします。
SELECT * FROM `ORDER` ORDER BY NAME;
私自身の意見では、予約語を使用することは問題ありませんが、首にそのような痛みを与えるので、適切に処理することを忘れないでください。
しかし、スキーマを設計してきた何年にもわたって、予約キーワードを使用したことはありませんでした:D
別の回答で見られるように、MySQL では単語がデータベース オブジェクトであることを示すためにバッククォートが使用されるため、予約語との混同を防ぐことができます。SQL の他の方言では、角かっこ[ ]
(SQLServer) または二重引用符" "
(他のほとんどの方言) が代わりに使用されます。 .
私の経験では、テーブル構造で予約語を使用すると、特に新しいクエリを作成するときに問題が発生する傾向があります。列名が予約語であることが原因でエラーが返されることに気付くまでに時間がかかる場合があります。また、この質問の存在が示すように、クエリで適切な引用符を使用することで問題を回避できることを誰もが知っているわけではないという点もあります。