MEMO REC

雑記帳兼php、mysql、html、css、javascript等の備忘録です。

【MySQL】カラム名に予約語が使われている時のSELECT

カラム名予約語を使用していてエラー

下記の様な構成のテーブルがある時に

論理名 物理名
部署ID group_id
部署名 group

何も考えずに下記SELECT文を投げるとエラーになります。

mysql> SELECT group FROM GroupMaster;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group from GroupMaster' at line 1

理由は単純でカラム名として使用されている「group」が予約語の為です。
※group byで使用

そんな時は下記の様にカラム名を「`(バッククォート)」で囲う。

mysql> SELECT `group` FROM GroupMaster;

バッククォートとか普段あまり使わないですが、
「Shift + @」で入力出来ます。

「`」でカラム名を囲う方が高速

「`」でカラム名を囲ったほうがSELECTは高速なので、
カラム名は基本的に「`」で囲む癖をつけた方がいい。

そもそもカラム名予約語を使用しない様にテーブル設計する。

PostgreSQLの場合は「"(ダブルクォート)」で囲う