データベースのクォーテーション、使い方まちまち。
まとめた。
'シングル' | "ダブル" | `バック` |
[大カッコ] | 備考 | |
---|---|---|---|---|---|
MySQL | 文字列定数 | 文字列定数 | 引用識別子 | (なし) | 引用識別子はUNIX系では大文字小文字を区別1 |
MySQL (ANSI_QUOTES モード) |
文字列定数 | 引用識別子 | 引用識別子 | (なし) | |
PostgreSQL | 文字列定数 | 引用識別子 | (なし) | (なし) | 引用識別子では大文字小文字を区別 |
Oracle | 文字列定数 | 引用識別子 | (なし) | (なし) | 引用識別子では大文字小文字を区別 |
SQLite | 文字列定数 | 引用識別子 | 引用識別子 | 引用識別子 | |
Microsoft SQL Server (Transact-SQL) |
文字列定数 | 引用識別子 | (なし) | 引用識別子 | QUOTED_IDENTIFIER が ON (既定値) の場合 |
こうみると、MySQLが異端児ってのがよくわかる。
引用識別子は識別子の1つ。識別子はテーブル名やカラム名など、データベース中のオブジェクトを表す文字列だが、決まった引用符(クォーテーションマーク)で囲むことで、空白や予約語などの特別な文字列を用いることができる(エスケープできる)のが引用識別子である。
ただ、そんな特別な文字列を使ったテーブル名やカラム名は、混乱の元なので、使わないほうがよいだろうね。
また表中にも書いたように引用識別子は大文字小文字を(大抵の場合は)区別する。フレームワークのORマッパでは、テーブルやカラムなどを自動的に引用識別子で定義する場合がある。都合悪くなることはまずないのでこれに従っておこう。
- 文字列は 'シングルクォーテーション' で囲む。
- 引用識別子はフレームワークに従い、命名規則のルールを統一。
が良さげ。