私の外部記憶装置

ただの覚え書きです。ちょこちょこ見直して加筆・修正していますが、間違ってるかも😅

【SQL】識別子(名前)とキーワード

PostgreSQL の場合

4.1.1. 識別子とキーワード < 4.1. 字句の構造
付録C SQLキーワード

  • キーワードと識別子(名前)は、大文字と小文字を区別しない
    ※慣習的には「キーワードを大文字」「識別子(名前)を小文字」で書く
  • 識別子(名前)で使える文字は、
    1文字目:文字(azおよび発音区別符号付き文字と非Latin文字)、アンダースコア_
    2文字目〜:文字、_、数字(09)、ドル記号$
    🚨標準SQLでは、$は識別子内では使えない。この為、これを使用するとアプリケーションの移植性が低くなる
  • 識別子(名前)は、二重引用符"
    • 付ければ、ハイフン、スペース等何でも使える。(日本語も使えるが使わない方が良い)
    • 付ければ、大文字と小文字を区別する
    • 付けなければ、常に小文字に解釈される
      ⭐️識別子(名前)は、「小文字のみで定義」した方が使いやすい
      ※標準SQLでは引用符の付かない「名前」は、大文字に解釈されるべきだとされている。 したがって標準SQLによれば、fooは"FOO"と同じであるべきで、"foo"とは異なる。 もし移植可能なアプリケーションを書きたいならば、特定の名前は「常に二重引用符"で囲む」か「まったく囲まない」かのいずれかに統一するのがオススメ
  • 単一引用符'で囲むと「文字列」と解釈される
    二重引用符"で囲むと「識別子(名前)」と解釈される
  • 識別子(名前)がキーワードと被る場合、二重引用符"で囲めば「識別子」、囲まなければ「キーワード」と解釈される
    🚨先々キーワードに追加され無さそうな言葉(英単語)を選ぶ

SQLite の場合

SQLite キーワード
SQLite のクセ、注意点、落とし穴

  • SQLite は基本的に大文字と小文字を区別しない
  • 識別子(名前)で使える文字は、
    1文字目:文字(azおよび発音区別符号付き文字と非Latin文字)、アンダースコア_
    2文字目〜:文字、_、数字(09
  • 識別子(名前)は、二重引用符"
    • 付ければ、ハイフン、スペース等何でも使える。(日本語も使えるが使わない方が良い)
    • 付ければ、大文字と小文字を区別する。(又は角カッコ[]も可)
  • 単一引用符'で囲むと「文字列」と解釈される
    二重引用符"で囲むと「識別子(名前)」と解釈される
  • 識別子がキーワードと被る場合、二重引用符"で囲めば「識別子」、囲まなければ「キーワード」と解釈される
    ただし、文脈で判断できる場合は、"で囲まなくても「識別子」と解釈する場合がある
    🚨先々キーワードに追加され無さそうな言葉(英単語)を選ぶ