MySQLWorkbenchのEditorが6.3からすごく高機能になったと聞いたので使ってみました。
SELECT i.item_name, i.cnt AS item_count,i.craeted_at, CONCAT(i.attr_1, ', ', i.attr_2, ', ' , i.attr_3) AS item_attributes, (SELECT p.party_name FROM aaa.PARTIES p WHERE i.user_id = 1) AS party_name FROM (SELECT * FROM user_item WHERE deleted <> 1 ORDER BY item_id ASC) i LEFT JOIN users u ON i.user_id = u.user_id WHERE u.user_id = 123 AND u.deleted <> 1 ORDER BY u.user_id DESC LIMIT 0, 1 ;
これを整形します。command+b
です。
SELECT i.item_name, i.cnt AS item_count, i.craeted_at, CONCAT(i.attr_1, ', ', i.attr_2, ', ', i.attr_3) AS item_attributes, (SELECT p.party_name FROM aaa.PARTIES p WHERE i.user_id = 1) AS party_name FROM (SELECT * FROM user_item WHERE deleted <> 1 ORDER BY item_id ASC) i LEFT JOIN users u ON i.user_id = u.user_id WHERE u.user_id = 123 AND u.deleted <> 1 ORDER BY u.user_id DESC LIMIT 0 , 1 ;
嬉しい
- サブクエリも整形される。
気になる
ちょっと気になる
- サブクエリの整形になんか統一感がない。
- 4spaceインデント。(個人的には予約語の高さで揃えるほうが好き。)
- where句のANDなどが同じ行になる。(個人的には改行して欲しい。)
- limit句のオフセットの後のカンマの手前にスペースが入る。
sublimetextのSqlBeautifierプラグインと違って、元の状態にある程度影響されます。例えば、最後のセミコロンの手前の空行はそのままになってます。
MySQL専用だけあって、SQL標準の予約語だけでなくMySQLの関数もばっちりハイライト&コード補完されるし、予約語を一括で大文字化(あるいは小文字化)する機能があったり、そもそも接続してDBの中を横目に見ながらクエリ実行できるし、すごく便利です。ただ、普通のEditorと比べると重たい(起動にちょっと時間かかる)のほやっぱりちょっと気になります。
*1:実行できるか試してないくらい適当です。