84669 人が学習中
152542 人が学習中
20005 人が学習中
5487 人が学習中
7821 人が学習中
359900 人が学習中
3350 人が学習中
180660 人が学習中
48569 人が学習中
18603 人が学習中
40936 人が学習中
1549 人が学習中
1183 人が学習中
32909 人が学習中
次のような単純な MySQL クエリを実行しようとしています:
しかし、次のエラーが表示されます:
エラー 1064 (42000): SQL 構文にエラーがあります。'key) VALUES ('Tim', 'Florida', 42 )'については、MySQL サーバーのバージョンのマニュアルを確認してください。の近くで使用する構文
エラー 1064 (42000): SQL 構文にエラーがあります。'key) VALUES ('Tim', 'Florida', 42 )'については、MySQL サーバーのバージョンのマニュアルを確認してください。
'key) VALUES ('Tim', 'Florida', 42 )'
この問題を解決するにはどうすればよいですか?
###質問###
、INSERT、DELETEなどの特定の単語は予約語です。これらには特別な意味があるため、これらをテーブル名、カラム名、またはその他のタイプの識別子として使用するときは、識別子をバッククォートで囲んでいない限り、MySQL はそれを構文エラーとして扱います。公式ドキュメントに記載されているように、
INSERT
DELETE
10.2 スキーマ オブジェクト名(強調追加): em>キーワードと予約語の完全なリストは、
10.3 キーワード セクションと予約語にあります。このページでは、「(R)」に続く単語は予約語です。この問題を引き起こす傾向にある多くの予約語を含め、いくつかの予約語を以下に示します。###に追加### ###そして### ###前に### ###著者### ###電話### ###場合### ###状態### ###消去### ###降順### ###説明する### ###から### ###グループ### ###存在する### ###索引### ###入れる### ###間隔### ###はい###
###質問###
MySQL では、
SELECT、
INSERT
、DELETE
などの特定の単語は予約語です。これらには特別な意味があるため、これらをテーブル名、カラム名、またはその他のタイプの識別子として使用するときは、識別子をバッククォートで囲んでいない限り、MySQL はそれを構文エラーとして扱います。公式ドキュメントに記載されているように、
10.2 スキーマ オブジェクト名(強調追加): em>キーワードと予約語の完全なリストは、
10.3 キーワード セクションと予約語にあります。このページでは、「(R)」に続く単語は予約語です。この問題を引き起こす傾向にある多くの予約語を含め、いくつかの予約語を以下に示します。###に追加### ###そして### ###前に### ###著者### ###電話### ###場合### ###状態### ###消去### ###降順### ###説明する### ###から### ###グループ### ###存在する### ###索引### ###入れる### ###間隔### ###はい###
重要事項###のように###- 制限
###長さ### ###マッチ### ###いいえ###
- オプション
###または### ###注文### ###パーティション### ###ランキング###
- 参考文献
###選ぶ### ###テーブル### ###に###
- 更新
###どこ###
- ###解決###
選択肢は 2 つあります。
- ###1。予約語を識別子として使用しないでください
- 最も簡単な解決策は、予約語を識別子として使用しないことです。予約語ではない、列の別の適切な名前が見つかる可能性があります。
- これにはいくつかの利点があります:
- これにより、データベースを使用する開発者や他の開発者が、特定の識別子が予約語であることを忘れたり知らなかったりしたために、誤って構文エラーを書き込む可能性が排除されます。 MySQL には多くの予約語があり、ほとんどの開発者がそれらをすべて知っているとは考えられません。最初からこれらの単語を使用しないことで、自分自身や将来の開発者に罠を仕掛けることを避けることができます。
- 識別子の引用方法は SQL 言語によって異なります。 MySQL はデフォルトでバックティックを使用して識別子を引用しますが、ANSI 準拠の SQL (ここで説明するように、実際には ANSI SQL モードの MySQL) は二重引用符を使用して識別子を引用します。したがって、バックティックを使用して識別子を引用するクエリは、他の SQL 言語への移植性が低くなります。
- 将来のエラーのリスクを純粋に軽減するという目的であれば、これは一般にバッククォート識別子よりも賢明なアプローチです。
###2。バックティック
- を使用する
テーブルまたは列の名前を変更できない場合は、前に引用した
- 10.2 スキーマ オブジェクト名
のように、問題の識別子をバッククォート (
- `
) で囲みます。
使用法を示す例 (
- 10.3 キーワードと予約語
から抜粋):
- 繰り返しになりますが、質問内のクエリは、次のようにキー
key
- をバッククォートで囲むことで修正できます。 リーリー