【postgreSQL】キーワードはスネークケースで

2023/10/24に公開

postgreSQLではスネークケースが良さそう

  • postgreSQLでは大文字小文字を区別しないらしい
  • つまり、以下のような事態に陥る

ex). キャメルケースを用いたテーブル名「userInfo」を定義した場合

  • OK: CUIやクライアントツールでSQLを発行する場合
query.sql
/* 直接SQLを発行する場合(CUI、GUI)は下記でも可能 */
+ OK
+ select * from userInfo
  • BAD: サーバーからSQLを発行する場合等
query.go
/* INSERT文 */
- BAD
- insertQuery := "INSERT INTO userInfo VALUES ($1, $2, $3)

→ エラーメッセージ: relation "userinfo" does not exist

下記の記載によると「userInfo」は「userinfo」と解釈されているらしい

キーワードと識別子に対して大文字小文字を区別しません。
識別子が二重引用符で括られていた場合は大文字小文字を区別します
https://www.postgresql.jp/document/7.3/tutorial/tutorial-table.html

  • つまり、キャメルやパスカルケースは利用を避けた方が良い
+ insertQuery := "INSERT INTO user_info VALUES ($1, $2, $3)

// 無理やり下記のようにも記載できるが、そうする理由はないだろう
insertQuery := `INSERT INTO "userInfo" VALUES ($1, $2, $3)`

カラムの値は大文字小文字が区別される

下記のようなテーブルを想定

ID PASS
test1 pass1
TEST1 pass
// ID:test1の場合
+ PASS:pass1
- PASS:pass
// ID:TEST1の場合
+ PASS:pass
- PASS:pass1

Discussion