SQLiteの命名規則についてメモ
テーブルやカラムなどの名前(識別子)に使用してよい文字は
- アルファベットかアンダースコア( _ )で始まること
- その後はアルファベット・数字・アンダースコアが続くこと
ということで、使っていい文字種は思いの外すくないですね。
ハイフン( - )やピリオド( . )などは使ってはいけないようです。
数字で始まる名前もだめですね。
名前の例:
- mytable
- my_field
- xyz123
- a
しかしながら、それだと名前の制約が随分キツイと思います。 そういう場合は、ダブルクォート( " )か角カッコ( [ ] )でくくれば、 上記の命名規則に従わない文字列も使えるとのことです。
たとえば、本来の命名規則だと
- my table
- my-field
- 123xyz
- 3.14
というのは使えませんが、使用するときに " " や [ ] でくくればどんな文字でもOKということのようです。ダブルクォートを使うかスクエアブラケットを使うかは好みのほうを使えばよいです。
- "my table"
- [my-field]
- "123xyz"
- [3.14]
こういう風にすればOKです。実際、こうやって使えました。
注意として、シングルクォートでくくるのはダメです。
シングルクォートでくくると別の意味(文字列)になります。
文字列のエスケープ処理 - SQLiteのデータ型 - SQLite入門
ところで、名前の中にダブルクォートを含めることはできるのだろうか?
(あ、そのために、二種類の囲み文字が用意されているのだな?)
それか、ダブルクォートの前にもう一個ダブルクォートを重ねれば
それでエスケープになるのかも。
参考:http://catalogue.pearsoned.co.uk/samplechapter/067232685X.pdf
Naming Conventions
Each database, table, column, index, trigger, or view has a name by which it is identified and almost always the name is supplied by the developer.The rules governing how a valid identifier is formed in SQLite are set out in the next few sections.
Valid Characters
An identifier name must begin with a letter or the underscore character, which may be followed by a number of alphanumeric characters or underscores. No other characters may be present.These identifier names are valid:
- mytable
- my_field
- xyz123
- a
However, the following are not valid identifiers:
- my table
- my-field
- 123xyz
You can use other characters in identifiers if they are enclosed in double quotes (or square brackets), for example:
sqlite> CREATE TABLE "123 456"("hello-world", " ");
Name Length
SQLite does not have a fixed upper limit on the length of an identifier name, so any name that you find manageable to work with is suitable.