このガイドが役立つ場面
SQL予約語一覧、Oracle・PostgreSQL・MySQL・SQL Server・SQLiteの予約語比較、テーブル名やカラム名にORDER・USER・KEYなどを使えるか調べたい利用者向けです。
- CREATE TABLEやSELECTで識別子付近に構文エラーが出る原因を調べる
- DB移行前に既存のテーブル名・カラム名が移行先の予約語と衝突しないか確認する
- DDLレビューで新しい識別子の命名と引用方法を確認する
- ORMが生成したSQLとDB固有キーワードの衝突を切り分ける
DBごとに予約語が異なる理由
- SQL標準の予約語に加えて各DBが独自の構文とキーワードを持つ
- 同じ単語でも予約語、文脈依存、非予約キーワードなど扱いが異なる
- DBのバージョンやSQLモードによって予約状態が変わる場合がある
- Oracle・PostgreSQL・SQLiteはダブルクォート、MySQLは主にバッククォート、SQL Serverは角括弧など引用方法も異なる
予約語と識別子を確認する手順
- 対象のデータベースを選び、使いたい単語を検索します。
- 予約状態、用途、意味を確認し、別DBの状態とも比較します。
- 識別子チェックへテーブル名やカラム名を入力し、安全な引用例を確認します。
- 新規設計なら予約語を避けた分かりやすい名前へ変更します。
- 既存資産で変更できない場合は、利用中バージョンの公式資料と実機で引用方法を確認します。
移植性と将来のバージョンアップへの注意
引用符を使えば作成できる識別子でも、SQLのたびに引用が必要になり、ORM、移行ツール、別DBとの互換性で問題になることがあります。予約語と同じ名前を新規採用しない方が保守しやすくなります。
一覧は確認の入口です。予約語はバージョンや設定で変わるため、最終判断では実際に利用するDBバージョンの公式資料と検証環境を確認してください。
具体例:orderというカラム名をDB移行前に確認する
orderは並べ替えを表すORDER BYで使われるため、DBによって識別子としてそのまま書くと構文エラーになります。まず移行元と移行先の予約状態を並べて確認します。
既存カラムを変更できない場合はDBに合う引用符を使いますが、新規設計ではorder_numberやsort_orderなど用途が分かる別名を検討します。
- 一覧でorderを検索し、対象DBの予約状態を確認します。
- DB間比較で移行元と移行先の扱いを並べます。
- 識別子チェックで引用例を確認し、実際のDDLとSELECTを検証環境で試します。
- 変更可能なら用途を表す非予約語の名前へ移行します。
識別子を変更する場合は、SQLだけでなくORMのマッピング、ビュー、ストアドプロシージャ、帳票、外部連携も検索してください。
よくある質問
- 引用符で囲めば予約語を識別子に使えますか?
- 多くのDBでは使えますが、引用符の種類、大文字・小文字の扱い、SQLモードが異なります。移植性と保守性を考えると、新規設計では予約語を避ける方が安全です。
- 一覧にない単語なら必ず安全ですか?
- 保証はできません。DBのバージョン、拡張機能、文脈依存キーワード、将来の追加予約語があるため、公式資料と実際のDBでも確認してください。
ブラウザで試す
入力内容はブラウザ内で処理されます。元データを残したうえで、結果を確認してから保存・共有してください。
SQL予約語・キーワード一覧を開く