Masteries

技術的なことや仕事に関することを書いていきます.

MySQLでテーブル名やカラム名に予約語を使うには?

最高の夏ことはてなサマーインターン2018が今年も開催されています. いろいろあって今年も講義を担当させて頂いており, 今回は何故かデータベースの講義をすることになりました.

その講義の途中, インターン参加者の方から, 「MySQLのテーブル名やカラム名に予約語は使えますか?」と質問をもらったところ, 「アー... どうでしたっけね...?」となってしまい, きちんとお答えできなかったので, 調べました.

結論としては,

にあるように, 引用符(`)で囲まれている場合は, 予約語もテーブル名やカラム名として使えます. MySQL 8.0.12で試すと, こういう感じなります:

mysql> create table int (i int);
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 'int (i int)' at line 1

mysql> create table `int` (i int);
Query OK, 0 rows affected (0.11 sec)