
SQL Assistantは元々PL/SQL DeveloperのTexTypeというプラグインでした。私は,この頃から使っています。ただTexTypeはPL/SQL Developerのバージョンが7から7.3に上がったときにPL/SQL Developerのプラグインとして利用できなくなりました。PL/SQL Developerのエディタウィンドウ内部にかなりの変更が加えられたためです。
Allround AutomationsのPL/SQL DeveloperフォーラムでTexTypeの開発者のコメントが登場しなくなったので,開発を止めたのだとばっかり思っていました。しかし,しばらくしてから,同じフォーラムでSQL Assistantという単独製品となっていることを教えてもらいました。調べてみるといつの間にか,各種DBに対応するようになっており,機能も大幅に増えていました。

このソフト,DBツールとしてはかなり異色なツールです。というのも自前のIDE画面を持っていないからです。誤解を恐れずに言うと他のDBツールやエディタに寄生してSQL作成を支援するという感じです。本来の画面を知っていれば,そこにSQL Assistantが支援機能を組み込んだ状態は,まさに「寄生」という表現がぴったりです。使用可能なツール,エディタについては,開発元のSoftTree Tecnologiesのサイトに出ています。Windows付属のメモ帳には当然対応していますが,EmEditorでは残念ながら動作しません。秀丸では一部動作しました。
実際にはPL/SQL Developer,VisualStudio,SSMS, Eclipseに対してはプラグインとして動作します。支援機能に特化しているため,かなり割り切った作りになっています。

支援機能に特化していると言うだけあって,補完機能は他に類を見ないほど,極めて強力です。
SELECT+スペースをタイプすると,テーブル一覧が表示されます。ここから2つの方法があります。

(1)そのままテーブル名を選択すると,テーブルの全カラムをSELECTするSQLになります。

(2)テーブル名のところでマウスクリックか,キーボードで→をタイプするとカラムの一覧が表示されます。さらに右のチェックボックスをマウスでクリックするかカラムの部分にカーソルを移動しては→キーをクリックするとその項目を含むSQLがどんどん作られていきます。さらに FROM句のテーブル名にはエイリアスも自動で作成されています。

カラムを展開した状態で,全項目を出力したいときには,マウスの右ボタンクリックからALLを選ぶこともできます。
PL/SQL Developerの欠点として補完表示中にスキーマ情報のリフレッシュができない,ということを言いましたが,SQL Assistantはこの状態でF5キー押下によりリフレッシュも可能です。素晴らしい。

大抵のJOIN句の接続条件で使用されるカラム名は両テーブルで同じ名前になっています。暗黙的に同一名称をJOIN条件にする自然結合があるくらいですから。
というわけで,SQL AssistantはJOIN句の接続条件候補としてテーブル間で同一のカラムをJOIN候補として表示してくれます。ここから選択すれば,fi.MAKER_ID = fm.MAKER_ID を入力する必要がなくなります。それと同時に,ここに表示されるべきなのに候補表示されていない場合,テーブル設計で何らかの問題が発生している可能性にも気づきます。


SELECTだけでカラム一覧が表示されたのと同様,INSERT,UPDATE文も同様に作成できてしまいます。
INSERT INTOの後で補完一覧を表示させ,テーブル名を選択すると以下のSQLになります。
INSERT INTO FF_ITEMS
(
ITEM_CODE,
ITEM_NAME,
ITEM_CATEGORY,
MAKER_ID
)
VALUES
(
/* ITEM_CODE */,
/* ITEM_NAME */,
/* ITEM_CATEGORY */,
/* MAKER_ID */
)
UPDATEも同様で以下のようになります。
UPDATE FF_ITEMS
SET
ITEM_CODE = ?,
ITEM_NAME = ?,
ITEM_CATEGORY = ?,
MAKER_ID = ?
このほかにも,SQLのクイックリファレンスやコード構造ビュー,俯瞰ビュー,ブックマーク,変数ハイライト,コードフォーマット等の機能があります。特にT-SQLのストアドプログラムを整形できるツールは見あたりません。(秀丸用のマクロにT-SQL整形ができるものがあるようです。機会があれば試してみたいと思います。)
また,Ver.5からはスタンダードとプロフェッショナルの2バージョン構成となり,プロフェッショナルバージョンでは,リファクタリング機能も追加されました。リファクタリング機能を含め,いくつかはPL/SQL Developerも実装しているものですが,SQL Server Management Studioが実装していないものです。なので,SQL Serverでの開発にSQL Assistantを利用すると,開発効率が大幅に向上します。SQL Assistant + SQL Server Management Studio = T-SQL向けIDEといった感じです。

現状ユニコード対応が未実装のため,日本語表示に問題が発生します。SoftTree TecnologiesのSQL Assistantサポートフォーラム上で,1年以上前からユニコード対応をリクエストしていました。その時の回答では,「ユニコード対応はVer.5で計画中」とのことでした。
最近Ver.5がリリースされたのですが,残念ながら,初期リリースにはユニコード対応が実装されていませんでした。フォーラムで開発担当者に「どうなっているの」と聞いてみたところ,「開発スケジュールには組み込まれている」とのことでした。いずれマイナーバージョンアップ等で実装されそうな感触です。
現状のSQL Assistantでやっかいな問題が生じるのは,以下の場合です。
1.データベースオブジェクトの名称(テーブル名,カラム名など)にマルチバイト文字を使用している場合。

2.SQL Assistantの支援機能中のshow Table Dataで表示するデータ中にマルチバイト文字がある場合。

3.SQL整形処理時にSQLの末尾にゴミデータが発生する
1,2については,単に文字化けする場合と,文字コードの処理に問題が発生して例外が発生する場合があります。後者が発生するとやっかいです。3.については例外の発生はないようです。(今まで使った限りでは,です)
最近のDBはオブジェクトの名称にマルチバイト文字を使用できるようになってきているとはいえ,普段の開発においてはマルチバイト文字を規約で禁止していると思います。ですので,項番1については,トラブルとなる開発現場は少ないと思います。
項番2については,メモ帳+SQL Assistantで開発しようと考える人はあまりいないと思うので,テーブル中のデータ参照にはDBツールの機能をそのまま利用することで回避できます。項番3については,フォーマット後にゴミデータを選択してDELキーを習慣にすれば,回避できます。ゴミデータの手動削除とSQL (T-SQL, PL/SQL)手動フォーマットの手間を考えれば,十分メリットがあります。
以上のように日本語表示に難があるとはいえ,支援機能は非常に強力です。SQL Server Management Studio (SSMS)を使うのであれば,ぜひ導入をお勧めします。有償ですけど。