MySQL 8 で簡単に予約語を調べる方法!
よくテーブルデザインをする際、あれ?これって予約語じゃね?って時ありませんか? もっと細かくみたい場合、WEBで調べるとか・・・ちょっとめんどくさいですよね。
いままで全然、知らなかったのですが、MySQL 8.0以降では、予約語をこんなに簡単になりました。
これは簡単!information_schema.KEYWORDSテーブルに予約語が格納されております!!
- information_schema.KEYWORDS
SELECT * FROM information_schema.KEYWORDS LIMIT 10; ---- +------------+----------+ | WORD | RESERVED | +------------+----------+ | ACCESSIBLE | 1 | | ACCOUNT | 0 | | ACTION | 0 | | ADD | 1 | | ADMIN | 1 | | AFTER | 0 | | AGAINST | 0 | | AGGREGATE | 0 | | ALGORITHM | 0 | | ALL | 1 | +------------+----------+
- 上記のテーブルにて、RESERVEDに1がついているものが予約語です
SELECT 'test' AS AGAINST ; +---------+ | AGAINST | +---------+ | test | +---------+ 1 row in set (0.00 sec) mysql> select 'test' AS ACCESSIBLE; 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 'ACCESSIBLE' at line 1
*例外として、たとえ予約後であっととしても、ダッシュ(`)で括ればエラーにはなりません。。が、面倒になるので、予約語を使ったテーブル設計は可能な限り避けましょう
mysql> SELECT 'test' AS FROM; 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 'FROM' at line 1 mysql> SELECT 'test' AS `FROM`; +------+ | FROM | +------+ | test | +------+ 1 row in set (0.00 sec)