PostgreSQL、MySQLの補完機能の違い
環境 CentOS6.6 MySQL5.6 PostgreSQL9.3
補完についてメモ。
MySQLにはデフォルトではSQLの補完機能がない。
PostgreSQLだとデフォルトでTAB補完が可能なため結構不便に感じる。
MySQLで補完機能を使う方法は2つ。
a) 大文字、小文字を厳密判断で補完。
つまりSELECTを以下のように小文字で入力すると
mysql> selec
TABを押しても補完されない。
確かに制御文は大文字で書くことが推奨されるが、小文字で書き始めたときでも補完してくれるPostgreSQLと比べるとやや残念な感じがする。
ただPostgreSQLは基本、大文字・小文字を区別しないので、そのあたりが関係しているのかもしれない。
※PostgreSQLも引用符で囲むと大文字・小文字を区別する。
b) 文法を考慮しない。
例えば、FROMの後にt1というテーブルを補完したいとき、tだけ打ち補完すると、
mysql> SELECT * FROM t t1 t1.comment t1.dep t1.id t1.memo t1.name tee test
とテーブル以外のカラムやコマンド、DBまで補完の候補に上がる。
同様にPostgreSQLで行うと
psql> SELECT * FROM t t1 t2
とテーブルだけ候補に挙がる。
他に例えば
mysql> CREATE S -- <TAB>で補完 SAVEPOINT SESSION_USER SNAPSHOT SQL_THREAD START SUBDATE ・・・ SELECT Sid SPECIFIC SQL_TSI_WEEK STDDEV_SAMP SUPER SELECTtables SIGN SQL SQL_TSI_YEAR STOP SUSPEND ・・・ SESSION SMALLINT SQL_SMALL_RESULT SSL STRIPED
psql> CREATE S -- <TAB>で補完 SCHEMA SEQUENCE SERVER
のようにMySQLは文法的に使えない構文や、テーブルも候補に挙げる